【SP3485芯片&xx接收】
本例程为STM32F4XX(M4内核)的485通信程序,采用串口1发送和接收数据,中断接收,将接收到的数据重新发送出去。
主函数文件如下: #include \
/**********************************************************\\**文件名:**************************************
**库版本:*********
**工作环境:RealView MDK-ARM *********************
**作者:曾有根***************************************生成日期:2012-08-03 ************************************功能:RS485通过串口1发送,中断接收!将接收到*****的数据通过再次发送出去
*********************\\**********************************************************/extern void uart_init(void);
extern void USART1_SendByte(u8 Data);
extern unsigned char UART1_GetByte(u8 GetData); extern void delay(unsigned int dl); void delay(unsigned int dl) {
unsigned int i,y; for(i = 0; i < 5000; i++) {
for(y = 0; y < dl; y++);
1 / 7
} }
static void led_init(void) {
GPIO_InitTypeDef GPIO_InitStructure; /* Enable the GPIO_LED Clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);/* Configure the GPIO_LED pin */
= GPIO_Pin_7 | GPIO_Pin_8 ; = GPIO_Mode_OUT; = GPIO_OType_PP; = GPIO_PuPd_UP; = GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure); }
int main(void) {
uart_init(); led_init(); while (1) {
USART1_SendByte(0x12);
2 / 7
GPIO_SetBits(GPIOE, GPIO_Pin_7 ); //LED1灯闪烁,表示数据发送完成 delay(1000);
GPIO_ResetBits(GPIOE, GPIO_Pin_7 ); delay(1000); } }
串口配置程序,文件如下: #include \
extern void delay(unsigned int dl);
#define TX_485 GPIO_SetBits(GPIOA,GPIO_Pin_8); #define RX_485 GPIO_ResetBits(GPIOA,GPIO_Pin_8); void USART1_SendByte(u8 SendData) {
TX_485;//打开发送控制端
delay(10);//延时,这个必须加上,不加会导致数据出错 USART_SendData(USART1,SendData); //发送数据
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); //等待数据发送完成 delay(10);
RX_485;//关闭发送控制端
3 / 7