最近在调试STM32结合simulink生成嵌入式代码的强大功能,起初发现uart模块有bug,就是USART_receive直接连接USART_send会一直发送,经过几天的摸索,发现是对simulink生成的代码的原理理解错了,并不是官方的UART代码框图模块有问题。simulink生成的嵌入式代码直接类比PLC的扫描周期就很好理解了,每个扫描周期就是simulink里面的采样周期,也就是下面设置的fixed-step size,这个设置会生成代码在每1ms执行一次
发送按下图的流程执行,不会出现一直发送的情况,前提是usart设置为中断接收和发送,终于解决。
另外,每串口接收完两个字符后执行一遍程序后,他会在下个扫描周期重新初始化Nbrcv,PtRcv,DataRcv,这些存储空间不是一直保留上一次收到的结果,而是每次接收完一次,再下个扫描周期会从新初始成null,这点及其重要,这是基于simulink扫描周期执行的性质,也就是说uart模块只能接收定长字节的数据,不能