本帖最后由 any012 于 2016-5-3 15:53 编辑 从网上下载了个stm32的modbus.c文件,有些地方看不懂,来论坛求救. 供用户调用的有三个函数: 1.void ModInit(u8 Id); //modbus初始化 2.void ModRcv(void); //modbus信息接收,放在串口接收中断 3.void ModSend(void); //modbus信息接收,放在串口接收中断 函数1和2很好理解.3就不明白了,我估计后面的注释写错了,这算是个串口发送函数,不应该放在串口中断里. 完整函数如下:
一开始我以为是将函数3放在串口发送中断里,但疑惑的是,没有触发发送中断的条件. 后来bing搜索了下,貌似USART_ITConfig(USART1, USART_IT_TC, DISABLE);这个函数,使能发送中断后,会发送个空白帧?从而引发第一次串口发送中断. 所以说,这个函数应该作为个串口发送函数放在modbus处理程序里而不是放在串口中断里? 是不是这样呢? |
ModSend(void)这个函数应该是放在串口发送中断里.不过这样的话,好象是发送中断函数里的函数又触发了发送中断,发送中断不断嵌套??