工具/软件:Code Composer Studio
IM使用定时器是一个示例代码。但谁能解释在何处将频率切换为60Hz,将占空比切换为25?
/* DriverLib包括*/
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
/*标准包括*/
#include <stdint.h>
#include <stdbool.h>
//![简单定时器A配置]
/* Timer_A PWM配置参数*/
Timer_a_PWMConfig pwmConfig =
{
Timer_A_CLOCKSOURCE_SMCLK,
Timer_a_CLOCKSOURCE_diver_1,
3.2万,
Timer_a_CAPTURECOMPare_register_1,
Timer_a_OUTPUTMODE_RESET_SET,
3200
};
//![简单定时器A配置]
内部主(无效)
{
/*停止监视程序*/
MAP_WDT_A_HoldTimer();
//![简单定时器A示例]
/*将MCLK设置为REFO,低频模式为128Khz
*将SMCLK设置为64Khz */
MAP_CS_setReference振 荡器频率(CS_REFO_128KHZ);
MAP_CS_initClockSignal (CS_MCLK,CS_REFOLCLK_SELECT,CS_CLock_diver_1);
MAP_CS_initClockSignal (CS_SMCLK,CS_REFOLCLK_SELECT,CS_CLock_diver_2);
MAP_PCM_setPowerState(PCM_AM_LH_VCORE0);
/*将2.4 的外围输出配置为PWM ,将WFP的6.7 配置为按钮
*中断*/
MAP_GPIO_setAsPeripheralModuleFunctionOutputPin (GPIO端口P2,GPIO_PIN4,
GPIO主要模块功能);
MAP_GPIO_setAsInputPinWithPullUp阻 器(GPIO_PORT_P1, GPIO_PIN1);
MAP_GPIO清除InterruptFlag (GPIO端口P1,GPIO PIN1);
MAP_GPIO_enableInterrupt (GPIO端口_P1,GPIO _PIN1);
/*将Timer_A配置为具有大约500ms和的周期
* 10 % 的初始占空比(3200 tick) *
MAP_Timer_a_generatePWM (TIMER_A0_BASE,&pwmConfig);
//![简单定时器A示例]
/*启用中断并启动监视程序计时器*/
MAP_Interrupt_enableInterrupt (INT_Port1);
MAP_Interrupt_enableSleepOnIsrExit();
MAP_Interrupt_enableMaster();
/*不使用时休眠*/
同时(1)
{
MAP_PCM_GotoLPM0();
}
}
/*端口1 ISR -此ISR将逐步增加PWM的占空比
*按下按钮
*/
void Port1_IRQHandler(void)
{
UINT32_t状态= MAP_GPIO _getEnabledInterruptStatus (GPIO端口P1);
MAP_GPIO清除InterruptFlag (GPIO端口P1,状态);
IF (状态和GPIO _PIN1)
{
IF (pwmConfig.dutyCycle == 2.88万)
pwmConfig.dutyCycle = 3200;
否则
pwmConfig.dutyCycle +=3200;
MAP_Timer_a_generatePWM (TIMER_A0_BASE,&pwmConfig);
}
}
另外,我尝试使用此代码,但它没有成功,并给出一个错误,指出TA0CRR1,TA0CTL P1DIR未定义。 我想对一些简单易懂的代码进行编码。另外,我需要在哪里更改为引脚1.0 (红色LED),以便LED将亮起?
#include "msp.h"
/**
主要c
*/
Void主(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= BIT2+BIT3; // P1.2 and P1.3 output P1SEL |= BIT2+BIT3; // P1.2 and P1.3 options select TA0CCR0 = 512-1; // PWM Period TA0CCTL1 = OUTMOD_7; // CCR1 reset/set TA0CCR1 = 384; // CCR1 PWM duty cycle TA0CCTL2 = OUTMOD_7; // CCR2 reset/set TA0CCR2 = 128; // CCR2 PWM duty cycle TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, up mode, clear TAR __bis_SR_register(LPM0_bits); // Enter LPM0 __no_operation(); // For debugger