CC2530裸机编程-定时器1
来源:互联网 发布:本田凌派maf标准数据 编辑:程序博客网 时间:2024/06/06 01:40
1. 测试端口LED的配置
//以P0_6端口为例#define LED P0_6void Hal_LEDInit(void){ P0SEL &= ~0xC0; //通用IO P0DIR |= 0xC0; //输出模式 LED = 0;//初始状态为灭}
2.设置系统主时钟
void Hal_SystemClockInit(void){ CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ的晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32MHZ CLKCONCMD &= ~0x07; //设置系统主时钟频率为32MHZ CLKCONCMD |= 0x38; //定时器标记输出为250KHZ SLEEPCMD |= 0x04; //关闭不使用的RC振荡器}
3.自由运行模式下的Timer1配置
void Hal_Timer1Init(void){ T1CTL = 0x01; //1分频,自由运行(0x0000-0xFFFF反复计数) T1STAT= 0x21; //通道0, 中断有效 }
4.Timer1中断函数
#pragma vector=T1_VECTOR __interrupt void T1_IRQ(void){ LED = !LED; T1IF=0;}
5.主函数
void main(void){ Hal_SystemClockInit(); Hal_Timer1Init(); Hal_LEDInit(); IEN1 |=0x02; //P0口中断使能 EA = 1; //使能全局中断 while(1);}
6.完整源代码
/***************************************** * Filename: hal_timer1.c * Date: 2017-09-08 * Author: By Kevin * * Description: Timer1 Experiment****************************************/#include <ioCC2530.h>#define LED P0_6void Hal_SystemClockInit(void);void Hal_Timer1Init(void);void Hal_LEDInit(void);void main(void){ Hal_SystemClockInit(); Hal_Timer1Init(); Hal_LEDInit(); IEN1 |=0x02; //P0口中断使能 EA = 1; //使能全局中断 while(1);}#pragma vector=T1_VECTOR __interrupt void T1_IRQ(void){ LED = !LED; T1IF=0;}void Hal_SystemClockInit(void){ CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ的晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32MHZ CLKCONCMD &= ~0x07; //设置系统主时钟频率为32MHZ CLKCONCMD |= 0x38; //定时器标记输出为250KHZ SLEEPCMD |= 0x04; //关闭不使用的RC振荡器}void Hal_Timer1Init(void){ T1CTL = 0x01; //1分频,自由运行(0x0000-0xFFFF反复计数) T1STAT= 0x21; //通道0, 中断有效 }void Hal_LEDInit(void){ P0SEL &= ~0x40; //通用IO P0DIR |= 0x40; //输出模式 LED = 0;//初始状态为灭}
7.分析
该例程是利用Timer1中断实现LED灯的闪烁,那么该配置下LED闪烁的频率是多少呢?或者说怎样设置LED闪烁的频率呢?
该例程中系统时钟选择是32MHz的外部石英晶振,定时器的标记频率设置为250kHz,计数器的数值以250khz的频率增加,即计数器的数值每隔
由图可知,实际输出波形的周期
阅读全文
0 0
- CC2530裸机编程-定时器1
- cc2530裸机编程系列笔记1--定时器Timer1模模式的程序设计
- cc2530裸机编程系列笔记2--定时器Timer1模模式程序(中断方式)
- cc2530裸机编程系列笔记3--定时器Timer1自由模式程序
- cc2530裸机编程系列笔记5--中断
- cc2530裸机编程系列笔记4--GPIO口的使用
- cc2530裸机编程系列笔记6--外中断程序(转载)
- 用龙芯1c库在裸机编程环境中实现硬件定时器中断
- CC2530 定时器T1
- CC2530 定时器T3
- CC2530定时器使用
- ARM裸机编程系列----系统时钟与定时器
- CC2530定时器3通道1输入捕获中断
- CC2530定时器配置笔记1(基本定时功能配置)
- zigbee网关 cc2530裸机驱动温度传感器LM75A
- 裸机调试----定时器
- 裸机调试------定时器中断
- S3C6410裸机定时器
- mysql innoDB的REPEATABLE READ MVCC事务实现方式
- html与css第三天
- 让我们用mavon-editor开发博客系统
- PAT乙级1059. C语言竞赛(20)
- Ubuntu 16.04下安装VMware Tools(三行命令搞定)
- CC2530裸机编程-定时器1
- 漫无目的的来到北京(求职路一)
- 自定义一个死锁
- 算法 第四版 动画 2.1.17
- 栈溢出笔记1.1 函数调用过程
- SVN的命令行操作、图形界面TortoiseSVN操作
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- userInfo和NSValue
- 新疆网赛G题(KMP+树状数组)