如果我要同时让P1.2与P1.3产生PWM波,该怎么设置
时间: 2023-08-28 09:05:32 浏览: 93
要同时让P1.2和P1.3产生PWM波,你需要额外的一个Timer A通道。下面是修改后的代码:
```c
#include "driverlib.h"
#define TIMER_PERIOD 8192
void Timer_A0_PWM_Init(void)
{
Timer_A_outputPWMParam htim = {0};
//P1.2复用输出
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1, GPIO_PIN2);
//时钟源选为SMCLK = 1048576 HZ
htim.clockSource = TIMER_A_CLOCKSOURCE_SMCLK;
//分频系数设为32 32768HZ
htim.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_32;
//装载值设为8192 - 1 ,周期为0.25s
htim.timerPeriod = TIMER_PERIOD - 1;
//P1.2 对应 TA0.1 故设为TIMER_A_CAPTURECOMPARE_REGISTER_1 定时器为0
htim.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_1;
//选择复位置位模式
htim.compareOutputMode = TIMER_A_OUTPUTMODE_RESET_SET;
//设置占空比,为5%
htim.dutyCycle = TIMER_PERIOD / 20 ;
//P1.2 对应 TA0.1 为TIMER_A0_BASE
Timer_A_outputPWM(TIMER_A0_BASE, &htim);
}
void Timer_A1_PWM_Init(void)
{
Timer_A_outputPWMParam htim = {0};
//P1.3复用输出
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1, GPIO_PIN3);
//时钟源选为SMCLK = 1048576 HZ
htim.clockSource = TIMER_A_CLOCKSOURCE_SMCLK;
//分频系数设为32 32768HZ
htim.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_32;
//装载值设为8192 - 1 ,周期为0.25s
htim.timerPeriod = TIMER_PERIOD - 1;
//P1.3 对应 TA1.1 故设为TIMER_A_CAPTURECOMPARE_REGISTER_1 定时器为1
htim.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_1;
//选择复位置位模式
htim.compareOutputMode = TIMER_A_OUTPUTMODE_RESET_SET;
//设置占空比,为10%
htim.dutyCycle = TIMER_PERIOD / 10 ;
//P1.3 对应 TA1.1 为TIMER_A1_BASE
Timer_A_outputPWM(TIMER_A1_BASE, &htim);
}
```
这里新增了一个Timer A通道,即Timer A1。在Timer_A1_PWM_Init函数中,将P1.3引脚设置为复用输出功能,并将相关的参数设置好,最后调用Timer_A_outputPWM函数将以上设置应用到Timer A1上。
这样就可以同时让P1.2和P1.3产生PWM波了。
阅读全文