概述
最近在调试STM32结合simulink生成嵌入式代码的强大功能,起初发现uart模块有bug,就是USART_receive直接连接USART_send会一直发送,经过几天的摸索,发现是对simulink生成的代码的原理理解错了,并不是官方的UART代码框图模块有问题。simulink生成的嵌入式代码直接类比PLC的扫描周期就很好理解了,每个扫描周期就是simulink里面的采样周期,也就是下面设置的fixed-step size,这个设置会生成代码在每1ms执行一次
发送按下图的流程执行,不会出现一直发送的情况,前提是usart设置为中断接收和发送,终于解决。
另外,每串口接收完两个字符后执行一遍程序后,他会在下个扫描周期重新初始化Nbrcv,PtRcv,DataRcv,这些存储空间不是一直保留上一次收到的结果,而是每次接收完一次,再下个扫描周期会从新初始成null,这点及其重要,这是基于simulink扫描周期执行的性质,也就是说uart模块只能接收定长字节的数据,不能接收变长的数据,只能按设置Nb2Rcv接收数量接收满后立即执行后面的信号线中的代码,无法实现变长数据的接收和处理,这种灵活性还是不够,比如要实现modbus不定长数据帧就不能完全满足要求了。目前 stm32-mat-target 在ST官网上是废弃状态,官网已经下架了,但是stm32-mat-target的模块化编程对于快速生成代码时及其方便的。
最后
以上就是朴实糖豆为你收集整理的stm32 simulink stm32-mat-target 串口模块bug的问题的全部内容,希望文章能够帮你解决stm32 simulink stm32-mat-target 串口模块bug的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复