第二十九章战舰STM32开发板485实验
ALIENTEK 战舰STM32开发板
u8 t; RS485_TX_EN=1; //设置为发送模式 for(t=0;t<len;t++) //循环发送数据 { while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); USART_SendData(USART2,buf[t]); } while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); RS485_RX_CNT=0; RS485_TX_EN=0; //设置为接收模式 }
//RS485查询接收到的数据 //buf:接收缓存首地址 //len:读到的数据长度
void RS485_Receive_Data(u8 *buf,u8 *len) { u8 rxlen=RS485_RX_CNT; u8 i=0; *len=0; //默认为0 delay_ms(10); //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束 if(rxlen==RS485_RX_CNT&&rxlen)//接收到了数据,且接收完成了 { for(i=0;i<rxlen;i++) { buf[i]=RS485_RX_BUF[i]; } *len=RS485_RX_CNT; //记录本次数据长度 RS485_RX_CNT=0; //清零 } }
此部分代码总共4个函数,其中RS485_Init函数为485通信初始化函数,其实基本上就是在配置串口2,只是把PG9也顺带配置了,用于控制SP3485的收发。同时如果使能中断接收的话,会执行串口2的中断接收配置。USART2_IRQHandler函数用于中断接收来自485总线的数据,将其存放在RS485_RX_BUF里面。最后RS485_Send_Data和RS485_Receive_Data这两个函数用来发送数据到485总线和读取从485总线收到的数据,都比较简单。
头文件rs485.h中代码比较简单,在其中我们开启了串口2的中断接收。最后,我们看看主函数 main的内容如下:
int main(void) { u8 key; u8 i=0,t=0; u8 cnt=0;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第二十九章战舰STM32开发板485实验(6)在线全文阅读。
相关推荐: