单片机C语言易错知识点经验笔记

在进行单片机开发时,经常都会出现一些很不起眼的问题,这些问题其实都是很基础的C语言知识点,是一些小细节。但是正是因为很基础,又都是小细节,所以我们往往容易忽视它们。结果有时候我们会花很长的时间纠结一个问题,迟迟找不到问题的所在。当发现原因竟然是这么的简单和不起眼时,大家都会感到痛不欲生。

小编这里记录一些常见的错误点,希望对大家有帮助。

文章最后有彩蛋~记得看完

1. !和 ~ 不一样

! 是逻辑非符号,~ 是位取反符号。对IO口某个管脚赋值时不要错用 !,如

LCD_CS_n_DR &= !LCD_CD_n_MASK;  //错误  

LCD_CS_n_DR &= ~LCD_CD_n_MASK;  //正确  
2.<<和>>的优先级低于+、-

比如要实现c=x*2+1,没有加括号会出错

c = x<<1+ 1;      //错误,c=x*(1+1)  
c = (x<<1) + 1;   //正确,c=x*2+1  
3.移位要防止溢出

其实用移位代替乘除法是个不错的方法,笔者很喜欢拿到一段代码后用移位代替乘除法来进行优化。不过有时候却会出现问题,比如溢出问题。当很明显可能溢出的话我们是会注意的,比如

char m = c<<4;    /
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值