BLE学习分享二
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
————————————————
版权声明:本文为CSDN博主「小木瓜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Linux_xiaomugua/article/details/6953742
1、Delayms() 如何实现延时 X ms?有没有误差?
延时函数如下:
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=587;j>0;j--);
}
这里的延时函数是利用的循环自减的方式来进行延时,CPU在执行循环时会使用一定时间,利用设计循环自减数达到延时的效果。
根据CC2540是32M晶振,则时钟周期=1/32us,指令周期=时钟周期=1/32us。由J =587算的自减循环需要用到的时间约为0.018375ms(按for循环588次,如有错误欢迎指正!!),误差较大。
2、KeyScan() 实现的流程?
代码如下: