ZigBee入门-CC2530-实验(七)-PWM-定时器-控制LED的亮度代码

Habiba ·
更新时间:2024-11-11
· 752 次阅读

PWM:说白了就是连续的时间内高低电平的组合,就是方波嘛~我们使一个GPIO定时器的计时下,一段时间使GPIO输出高电平,一段时间使GPIO输出低电平,我们拿示波器接到对应的GPIO上就可以看到PWM波。 PWM在我们实际应用开发中是很常见,例如:驱动电机的正转、反转;LED的亮度;蜂鸣器的声音高低;PWM控制在工业上更是尤为的重要。 // 本次实验实现:通过定时器比较模式,输出PWM波-改变LED亮度 #include #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //P1.0口控制LED1 void Init_Led(); //声明初始化LED函数 void Init_Timer1(); //声明定时器T1初始化函数 void Init_Clock(); //声明初始化时钟函数 void Delay(uint ms); //声明延时函数 /*=======================主程序入口============================*/ void main() { Init_Led(); //初始化LED灯 Init_Clock(); //初始化时钟 Init_Timer1(); //初始化定时T1 /******************************************************************** * 通过依次给T1CC2L赋不同的值, * 进而改变PWM的占空比,来控制LED的亮度。 * 现象:LED由 暗 慢慢 变亮 一直循环。 *******************************************************************/ while(1) { uchar i; uchar array[11]={0xF7,0xE1,0xC8,0xAF,0x96, 0x7D,0x64,0x4B,0x32,0x19,0x0A}; //占空比依次增大,LED逐渐变亮 for(i = 0; i < 11; i++) { T1CC2H = 0x00;//高位不变 T1CC2L = array[i];//依次改变占空比 Delay(50000); Delay(50000); } } } /*=======================声明函数的具体实现==========================*/ void Init_Led() { P1SEL &=~ 0x03; //配置P1.0 P1.1为通用I/O口 P1DIR |= 0x03; //配置P1.0 P1.1为输出 LED1 = 0; //初始LED1为熄灭 } void Init_Timer1() { PERCFG |= 0X40;//选定时器T1的I/O位置 置1:备用位置2 P2SEL &= ~0X10;//定时器1优先 P2DIR |= 0XC0; //第1优先级:定时器1通道2-3 P1DIR |= 0XFF; //端口1为输出 P1SEL |= 0X01; //timer1 通道2映射口P1.0为外设 //以上是配置PWM输出在P1_0脚,P1_0接有LED灯 //定时器通道0初值 1ms的周期时钟,频率为976.516Hz T1CC0H = 0X00; T1CC0L = 0Xff; //255 //以上是为了确定基准频率 //定时器通道2比较值 修改T1CC2L可调整led的亮度 T1CC2H = 0X00; T1CC2L = 0X7D; //125 ≈255%2;50%的占空比 //以上就是相对与基准频率 改变的占空比 T1CCTL2 = 0x1c; //通道2比较模式 T1CTL = 0x02; //250KHz 不分频 } void Init_Clock() { CLKCONCMD &= ~0x40; //系统时钟源选择:外部32MHz 。 while(!(SLEEPSTA & 0x40));//等待晶振稳定 CLKCONCMD &= ~0x47; //128分频 CLKSPD不发分频 SLEEPCMD |= 0x04; //关闭不用的RC振荡器 } void Delay(uint ms) { uint i,j; for(i=0; i<ms; i++) for(j=0; j<535;j++); } 如果大家觉得实验中一些寄存器的配置不是很明白,大家就拿出咱们吃饭的家伙CC2530的数据手册来把实验中出现的寄存器在手册中查找,去理解,数据手册网上多的是。

啃骨头,要好好啃,使劲啃,啃到底,才能啃到精髓嘛~~

我会每天更新一篇ZigBee入门-CC2530-的基础实验,让大家学习Zigbee技术不在是从入门到“入土”,而是从入门到巅峰~!!!

欢迎大家的留言和评论我会在看到的第一时间内答复。

看完后感觉得到帮助的小伙伴,要点点赞哦~

给笔者一些动力嘛!谢谢啦~

嵌入式Pro 原创文章 7获赞 7访问量 131 关注 私信 展开阅读全文
作者:嵌入式Pro



cc 定时器 zigbee pwm

需要 登录 后方可回复, 如果你还没有账号请 注册新账号