概述
CC2540/CC2541的基本操作
1)操作LED
//初始化
P0SEL &= ~0x01;//设置为普通IO口
P0DIR |= 0x01;//设置成输出模式
//LED控制
P0_0 = 1;//输出高电平,LED亮
P0_0 = 0;//低电平,LED灭
2)按键
//初始化
P0SEL &= ~0x01;//设置为普通IO口
P0DIR &= ~0x01;//设为输入模式
P0INP &= ~0x01;//打开上拉电阻,上拉输入
//取值
/****************************************************************************
* 名 称: KeyScan()
* 功 能: 读取按键状态
* 入口参数: 无
* 出口参数: 0为抬起 1为按键按下
****************************************************************************/
uchar KeyScan(void){
if (P0_0 == 0){
DelayMS(10); //延时10MS去抖
if (P0_0 == 0){
while(!P0_0); //松手检测
return 1; //有按键按下
}
}
return 0; //无按键按下
}
3)中断方式按键
//初始化
P0IEN |= 0x1; //P0IEN: 端口0,位7至位0中断使能。0:中断禁止;1:中断使能
PICTL |= 0x1; //端口0,引脚7至0输入模式下的中断配置,该位为端口0的7-0脚的输入选择中断请求条件。0:输入的上升沿引起中断;1:输入的下降沿引起中断
P0IEN |= 0x1; //端口0,位7至位0中断使能。0:中断禁止;1:中断使能;
P0IFG = 0x00; //端口0,位7至位0输入中断状态标志。当某引脚上有中断请求未决信号时,其相应标志为1。
EA = 1; //打开总中断
//按键检测的中断处理函数,不需要主动调用
/****************************************************************************
* 名 称: P0_ISR(void) 中断处理函数
* 描 述: #pragma vector = 中断向量,紧接着是中断处理程序
****************************************************************************/
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void){
DelayMS(10); //延时去抖
LED1 = ~LED1; //改变LED1状态
P0IFG = 0; //清中断标志
P0IF = 0; //清中断标志
}
4)ADC采样
//初始化
HalAdcInit();
HalAdcSetReference(HAL_ADC_REF_125V);//设置参考电压为内部1.25V
uint32 r=HalAdcRead(HAL_ADC_CHN_VDD3, HAL_ADC_RESOLUTION_10);//取得1/3电源值的ADC采样
5)看门狗
//初始化看门狗
void Init_Watchdog(void){
WDCTL = 0x00; //打开IDLE才能设置看门狗
WDCTL |= 0x08; //定时器间隔选择,间隔一秒
}
//喂狗, 需要不断喂狗, 因为BUG或其他原因长时间不喂狗, 系统就会复位
void FeetDog(void){
WDCTL = 0xa0; //清除定时器。当0xA跟随0x5写到这些位,定时器被清除
WDCTL = 0x50;
}
6)GPIO省电
一个接有负载的IO口,在不需要负载时如何省电呢(比如LED不需要亮时),答案是3态输入,上拉下拉输入都可能有消耗;P0SEL &= ~0x01;//设置为普通IO口
P0DIR &= ~0x01;//设置为输入模式
P0INP |= 0x01;//3态输入模式
转载于:https://my.oschina.net/u/184090/blog/333164
最后
以上就是风中荷花为你收集整理的CC2540/CC2541的基本操作CC2540/CC2541的基本操作的全部内容,希望文章能够帮你解决CC2540/CC2541的基本操作CC2540/CC2541的基本操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复