由浅入深,蓝牙40BLE协议栈开发攻略大全(2)

由浅入深,蓝牙40BLE协议栈开发攻略大全(2)

ID:47053513

大小:735.21 KB

页数:24页

时间:2019-07-10

由浅入深,蓝牙40BLE协议栈开发攻略大全(2)_第1页
由浅入深,蓝牙40BLE协议栈开发攻略大全(2)_第2页
由浅入深,蓝牙40BLE协议栈开发攻略大全(2)_第3页
由浅入深,蓝牙40BLE协议栈开发攻略大全(2)_第4页
由浅入深,蓝牙40BLE协议栈开发攻略大全(2)_第5页
资源描述:

《由浅入深,蓝牙40BLE协议栈开发攻略大全(2)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、本系列教程将结合TI推出的CC254xSoC系列,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。教程共分为六部分,本文为第二部分:        第二部分知识点:  第六节独立按键之查询方式  第七节独立按键之中断方式  第八节CC254x内部温度传感器温度采集  第九节五向按键  第十节蜂鸣器   有关TI的CC254x芯片介绍,可点击下面链接查看:  主流蓝牙BLE控制芯片详解(1):TICC2540   同系列资料推荐:   由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(1)   有关本文的工具下载,大家可以到以下这个地址:

2、  朱兆祺ForARM  第六节独立按键之查询方式  在MT254xboard上有一个独立按键KEY1,如图,独立按键和复位键在整个班子的左上角。按键通过P0.0口和CPU连接,在没有按键时为高电平,按下后为低电平。下面我们通过LCD来显示独立按键的状态。  其对应的原理图如下:  我们先用查询的方式读取按键的状态。因为按键接入在P0.0口,所以我们读取P0.0口的电平即可知道按键的状态。  uint8KeyValue(void)//读取按键状态  {  if((P0&0X01)==0X00)//按下为低电平  {  returnKEY_DOWN;  }  

3、else  {  returnKEY_UP;  }  }  这里我们在while循环中不断的读取按键状态,并且判断是否改变,如果改变则改变LCD的显示。  intmain(void)  {  uint8OldKeyValue=0;  uint8NewKeyValue=0;  SysStartXOSC();  LCD12864_Init();  LCD12864_DisStr(1,“KeyTest”);  //按键初始化  P0SEL&=~0X01;//设置为IO功能  P0DIR&=~0X01;//设置为输入功能  while(1)  {  NewKeyVa

4、lue=KeyValue();//读取按键状态  if(OldKeyValue!=NewKeyValue)//按键状态改变  {  OldKeyValue=NewKeyValue;//保存当前按键状态  if(OldKeyValue==KEY_DOWN)  {  LCD12864_DisStr(3,“KeyDown”);  }  else  {  LCD12864_DisStr(3,“KeyUp”);  }  }  }  return0;  }  运行程序,效果如图所示:  第七节独立按键之中断方式  复制Key工程,重命名为KeyInterrupt。刚刚我

5、们用查询的方式读取按键的状态。但是这种方式在实际的工程中没有实际的应用价值,下面我们采用外部中断的方式来读取按键的状态,每当按键按下时就会触发一次外部中断。为了P0.0口能够触发中断,我们需要进行如下配置:  P0IEN

6、=0X01;//P00设置为中断方式  PICTL&=~0X01;//下降沿触发  IEN1

7、=0X20;//允许P0口中断  P0IFG=0x00;//清除中断标志位  EA=1;//开总中断  然后就需要编写中断服务函数了。这里注意一点,在IAR中的中断函数有点特殊,格式为:  #pragmavector=中断向量  __interru

8、pt函数  所以我们的中断函数为:  #pragmavector=P0INT_VECTOR  __interruptvoidP0_ISR(void)  {  if(0x01&P0IFG)  {  NewKeyValue=KEY_DOWN;//记录按键按下  }  P0IFG=0;//清中断标志  P0IF=0;//清中断标志  }  在中断中我们记录按键按下,等待应用程序处理。而在主函数中我们需要处理按键按下事件,主函数中我们对按键计数并且通过LCD显示。  intmain(void)  {  charLCDBuf[21]={0};//显存  intKeyC

9、nt=0;  SysStartXOSC();  LCD12864_Init();  LCD12864_DisStr(1,“KeyTest”);  P0SEL&=~0X01;//设置为IO功能  P0DIR&=~0X01;//设置为输入功能  P0IEN

10、=0X01;//P0.0设置为中断方式  PICTL

11、=0X01;//下降沿触发  IEN1

12、=0X20;//允许P0口中断  P0IFG=0x00;//清除中断标志位  EA=1;//开总中断  sprintf(LCDBuf,“KeyCount:%d”,KeyCnt++);//按键计数  LCD12864_

13、DisStr(3,LCDBuf);  while(1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。