BLE学习分享二

这篇博客分享了BLE学习中的关键知识点,包括中断服务程序中volatile变量的重要性,多任务环境下标志变量的处理,以及存储器映射硬件寄存器的volatile说明。此外,还探讨了8051单片机的延时函数实现、键盘扫描流程、中断处理流程、特殊功能寄存器(SFR)的概念和用法,以及代码自动对齐的方法。
摘要由CSDN通过智能技术生成

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() 实现的流程?

代码如下:


                
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值