@
目录前言
记录开发过程中的总结和遇到的问题
总结
中断
- 中断里面的函数,尽量不要占用太多的时间,否则程序可能不能按照计划正常工作。
- 中断是随时可以发生的
- 所以在对数据进行操作时候,要考虑到状态的改变,如果不能在中断中进行处理的话,要先关中断,在写数据
温度采集
对于采集的温度值范围的设置要留有余量,
比如温度的最大值是3000℃,要留有余量,设置成3010℃,让客户知道已经超出了最大的温度范围。
如果只设置3000℃的话,那么3001℃和4000℃都是显示3000,没办法判断到底是超过了多少。
版本
在实际项目开发中,通常分为Release和Debug版本
- Debug版本有大量的字符串提示系统运行的情况
- Release版本对这些字符串进行裁剪,否则占用内存空间中的.TEXT段太多,显得很臃肿。
KEIL4里面添加BAT文件
如下图所示,可以在编译之前和编译之后添加.bat文件,.bat可以对文件重命名(如带上SVN版本号)等操作
大小端模式
0000430: e684 6c4e
在大端模式下,前16位应该这样读: e6 84 6c 4e ( 假设int占4个字节)
记忆方法: 从左到右,书写的顺序
0000430: e684 6c4e
在小端模式下,前16位应该这样读: 4e 6c 84 e6( 假设int占4个字节)
记忆方法: 相反
volitale关键字
STM32的引脚电压多少伏算高电平,多少伏算低电平
STM32的I/O管脚有两种:TTL和CMOS,所有管脚都兼容TTL和CMOS电平。也就是说,从输入识别电压上看,所有管脚(不管是TTL管脚还是CMOS管脚)都可以识别TTL或CMOS电平。下面是摘自STM32数据手册的有关数据:
问题
串口通讯
当使用9600波特率的时候,通讯稳定,当使用115200波特率的时候,通讯变得不稳定。
串行通信中,数据位信号流在信号线上传输时,要引起畸变,畸变的大小与以下的因素有关:
- 波特率-----信号线的特征(频带范围)
- 传输距离---信号的性质及大小(电平高低,电流大小)
- 当畸变较大时,接收出现误码。
在规定的误码率下,当波特率,信号线,信号的性质及大小一定时,串行通信的传输距离就一定。为了加大传输距离,必须加调制解调器。
最终解决方案: 通讯协议解析的时候,处理不是很好,没有对当出现错误的帧的时候,进行处理。
调试
调试的时候,显示的值异常,不方便阅读
修改成以下即可:__IO 即 volatile