注意事项:
- 累加/递减计数使用++/--时,注意++/--在前与在后的区别。如:
if(++Key_Slow_Down==20)Key_Slow_Down=0;与if(Key_Slow_Down++==20)Key_Slow_Down=0;的区别一定要分清
。 - 调用函数时要注意实参数据是数组类型/指针类型时,实参与形参数据类型必须一致。
- 点亮指定LED应在定时器中实现,因为这样能够避免程序之间的相互影响对LED产生的干扰,出现不受控制的频闪;(人眼暂留效应大概是20ms)
- unsigned char 类型数据,要使用%u进行输出,%d是有符号输出整型,%u是无符号输出整型,%c是输出数值对应的字符,以免不必要的错误。
- 写数据的时候需要注意,EEPROM是先写到缓冲区,然后再“搬运”到掉电非易失区。所以这个过程需要一定的时间,AT24C02这个过程是不超过5ms!如果在这个时候去让它应答是没有响应的!所以,当我们在写多个字节时,写入一个字节之后,再写入下一个字节之前,必须等待EEPROM再次相应才可以。
- 定时器中断会打断IIC通信,这会导致数据传输不完整,以此要避免二者的冲突。
- 注意!(逻辑取反)与~(按位取反)的区别
- C语言中类型转换都是向下取整,不是四舍五入,要四舍五入可以使用格式化输出浮点型数据,如
printf("%2.0f",3.5);结果就是为4
;或者可以使用三目运算符(X是一个float型数据)X+0.5>(int)X? X+1:X ;
- DS1302配置WP(开启写保护)时(0x8e=0x80,切记不能写成0x8e=1);
- DS18B20中读取温度时,先读取的是低8位温度值,后读取的才是高8位
- 当定时器开启中断允许位后,就必须要有中断函数,否则程序会因为找不到中断函数而奔溃。
- 字符串中的“\r\n”表示换行操作,串口中发送数据都是以字符的形式发送 ,串口接收的字符需要延时10ms。
如有不妥之处,还请指出,如有补充,洗耳恭听。此笔记仅供参考,如若对你有所帮助,点个赞加个关注呗谢谢,最后祝愿你旗开得胜,金榜题名。