This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP432P401R:调光 LED 灯

Guru**** 2595805 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/646774/ccs-msp432p401r-dimming-the-led-light

器件型号:MSP432P401R

工具/软件:Code Composer Studio

此代码来自我在线找到的示例之一

#include "msp.h"


int main (void){
void redirect(void);

_disable_IRQ ();

/*设置 TA0.4进行比较*/
Timer_A0->CTL = 0x02E4; /* SMCLK、ID =/8、连续模式、TA 清除*/
Timer_A0->Ex0 = 7; /* IDEX =/8 */
Timer_A0->CCTL[4]= TIMER_A_CCTLN_OUTMOD_6;// OUTMOD = TOGGLE *
Timer_A0->CCR[4]= 11719;//切换点11719*/
Timer_A0->CCTL[4]|= 0x10;//启用 CC 中断*/

/*将 P2.7配置为计时器 A0.4比较输出*/
P2->SEL0 |= 0x80;
P2->SEL1 &=~0x80;
P2->DIR |= 0x80;

redirect(); /*将 TA0.4输出连接到引脚 P2.1 */

NVIC_setpriority (TA0_N_IRQn、3);//在 NVIC 中将优先级设置为3
NVIC_EnableIRQ (TA0_N_IRQn); /*在 NVIC 中启用中断*/
__ENABLE_IRQ(); /*全局启用 IRQ */

while (1){
}
}

void TA0_N_IRQHandler (void){
Timer_A0->CCTL[4]&=~1; /*清除中断标志*/
Timer_A0->CCR[4]+= 11719; /*安排下一次切换*/
} 
/*此函数将 TA0.4的输出连接到引脚 P2.1 */
void redirect(void){
   PMAP->keyid = 0x2D52;    //解锁 PMAP */
   P2MAP->PMAP_REGISTER1 = PMAP_TA0CCR4A; /* 23、将 P2.1映射到 TA0.4 */
   P2->DIR |= 2;            //设置 P2.1以获取 TA0.4输出*/
   P2->SEL0 |= 2;
   P2->SEL1 &=~2;
   PMAP->CTL = 1;           //锁定 PMAP */
   PMAP->keyid = 0;


我可以调整闪烁速度、但我不知道可以在哪里调整光强度? 我希望强度更低。 有什么想法吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Halimatus、

    LED 的亮度取决于施加到 LED 的功率。 MCU 本质上是数字的、无法提供用于控制亮度的模拟信号、因此使用 PWM 技术来实现亮度控制。

    例如、100%占空比(GPIO 始终为高电平)是 LED 可以达到的最高亮度。 如果您将占空比降低50%、则亮度将降低50%。 我建议您观看一些讨论 LED 基础知识的视频。
    www.youtube.com/watch
    www.waitingforfriday.com

    简单地说、要调整亮度、您需要调整占空比。