标签:代码 unsigned 呼吸 delay CCR1 MSP4302553 设置 占空比 PWM
【MSP430呼吸灯】
msp4302553实现呼吸灯,在一个周期内,灯的亮度从暗到明再到暗,此即一个周期。以下为ccs代码:
#include "msp430g2553.h"
// *************************************************************
// 延时函数,延时n*ms
// *************************************************************
void delay_nms(unsigned int n)
{
unsigned int j;
for (j=0;j<n;j++)
{
//delay_1ms();
_delay_cycles(400);
}
}
// *************************************************************
// 主程序
// *************************************************************
void main(void)
{
unsigned const PWMPeriod = 1500; //设置PWMPeriod参数
volatile unsigned int i; //变量
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
BCSCTL1= CALBC1_1MHZ; //1M内部时钟,其他也可以
DCOCTL = CALDCO_1MHZ;
P1DIR |=BIT6; // 设置 P1.6为输出
P1SEL |=BIT6; // 设置 P1.6为TA0.1输出
TACCR0 = PWMPeriod; // 设置PWM 周期
TACCTL1 = OUTMOD_7; // 设置PWM 输出模式为:7 - PWM复位/置位模式,
// 即输出电平在TAR的值等于CCR1时复位为0,当TAR的值等于CCR0时置位为1,改变CCR1,从而产生PWM。其实模式2也可以
TACTL = TASSEL_2 +MC_1; // 设置TIMERA的时钟源为SMCLK, 计数模式为up,到CCR0再自动从0开始计数
while(1)
{
CCR1=0;//确保开始是暗的
//渐亮过程:不断设置CCR1的值,使翻转的时间变长,改变PWM的占空比
for(i=0;i<PWMPeriod;i++) {
CCR1=i;
delay_nms(4-(i/500)); //占空比变化的延时,调整延迟时间可改变呼吸灯变暗的速度
//在暗的时候延长delay时间,可增强效果
}
//渐暗过程:不断设置CCR1的值,使翻转的时间变短,改变PWM的占空比
for(i=PWMPeriod;i>0;i-=1)
{
CCR1=i;
delay_nms(4-(i/500)); //占空比变化的延时,调整延迟时间可改变呼吸灯变暗的速度
//在暗的时候延长delay时间,可增强效果
}
CCR1=0; //确保灯暗
// delay_nms(600); //暗0.6S增强效果
}
}
<iframe allowfullscreen="true" data-mediaembed="bilibili" id="7HYR7E6s-1610519930317" src="https://player.bilibili.com/player.html?aid=501231992"></iframe>
msp4302553实现呼吸灯
标签:代码,unsigned,呼吸,delay,CCR1,MSP4302553,设置,占空比,PWM 来源: https://blog.csdn.net/qq_43516928/article/details/112547908
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。