主题中讨论的其他器件: MSPWARE
我尝试使用 msp430fr4133使用 PWM 和中断来降低 LED 亮度、但我没有得到任何 PWM 工作正常的结果、LED 闪烁而不是褪色。代码我是 MSPware 驱动程序库、任何人都可以在中提出任何改进建议 我的代码。
#include "driverlib.h"
void initTimer(void);
int main (void){
WDT_A_HOLD (WDT_A_base);
GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);//红色 LED (LED2)
GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
//GPIO_setAsOutputPin (GPIO_PORT_P4、GPIO_PIN0);//绿色 LED (LED2)
//GPIO_setOutputLowOnPin (GPIO_PORT_P4、GPIO_PIN0);
//设置输出引脚
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P8、GPIO_PIN3、GPIO_PRIMARY_MODULE_Function);
//GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P1、GPIO_PIN7、GPIO_PRIMARY_MODULE_Function);
PMM_unlockLPM5 ();
initTimer();
__bis_SR_register ( GIE );//全局启用中断
while (1){
__no_operation();// while 循环的占位符(不需要)
}
返回(0);
}
空 initTimers (空)
{
//使用 CCROIFG 设置中断以切换红色 LED1
//使用 TA1IFG 切换绿色 LED2设置中断
Timer_A_initUpModeParam initUpParam ={0};
initUpParam.clockSource = TIMER_A_CLOCKSOURCE_ACLK;//使用 ACLK (较慢时钟)
initUpParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_divider;//输入时钟= ACLK / 1 = 32KHz
initUpParam.timerPeriod = 0xFFF/2;//一半的时间
initUpParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_ENABLE;//启用 TAR -> 0中断
initUpParam.captureCompareInterruptEnable_CCR0_CCIE = TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE;//启用比较中断
initUpParam.timerClear = timer_a_do _clear;//清除 TAR 和时钟分频器
initUpParam.startTimer = true;//尚未启动计时器
Timer_A_initUpMode( timer_A1_base,&initUpParam );
//CCR2配置
Timer_A_initCompareModeParam initCcr2Param ={0};
initCcr2Param.compareRegister = TIMER_A_CAPTURECMPARE 寄存器_2;
initCcr2Param.compareInterruptEnable = TIMER_A_CAPTURECMPARE INTERRUPT_DISABLE;
initCcr2Param.compareOutputMode = TIMER_A_OUTPUTMODE_TOGGLE_RESET;
initCcr2Param.compareValue = 0x0AB0;
Timer_A_initCompareMode (timer_A1_base、&initCcr2Param);
Timer_A_clearTimerInterrupt (timer_A1_base);
Timer_A_clearCaptureCompareInterrupt (timer_A1_base、timer_A_CAPTURECOMPARE 寄存器_0 + timer_A_CAPTUREACMPARE 寄存器_2);//清除 CCROIFG
Timer_a_startCounter (
Timer_A1_base、
Timer_A_up_mode
);
}