单片机学习与思考

本文探讨了单片机编程中使用位操作符如`|=`, `&=`的原因,解释了它们如何保护寄存器中其他位的值,并通过示例说明了其作用。同时,也提及了在遇到未定义外部引用错误时的解决方法,指出错误可能是由于未定义的全局变量或局部变量的作用域问题导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2020-11-15
为什么单片机中要用|=,&=呢?直接用=不行吗?
单片机中在给寄存器赋值时,常常写data|=0x03
不直接写data=0x03,是因为前者可以保护寄存器上其它位的值,只改变想要改变的位。
同样data&=~0x03就给寄存器的_0位和_1位置0了,但是不改变其它位的值。

2020-11-21
Error[e46]: Undefined external “debug_str::?relay” referred in hal_lcd ( C:\Texas Instruments\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp\

这条错误把debug_str( (uint8*)buf );这行注释掉就好了。看起来是没有定义debug_str,或者是说它的定义是局部变量,只在某个范围内有效。
看起来是个无关紧要的语句,问题解决了就暂时先不管了。
把debug_str( (uint8*)buf );这行注释掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值