---恢复内容开始---
16位定时器 Timer_A 输出精密PWM
1.模式操作
Timer_A 支持 :多路捕获/比较 、PWM输出 、 定时
同时支持 :中断
Timer_A 特点: 异步16位具有四种模式的定时器/计数器
可选择、可配置的时钟资源
多达7个可配置的 捕获/比较 寄存器
具有配置PWM的功能
异步输入和输出自锁
中断向量寄存器快速解码定时器中断
2.基本操作模式
三种模式: 连续计数模式
增计数模式
增减计数模式
TimerA_initCompare() 初始化比较模式 /*需要必要的参数*/
TimerA_generatePWM() 生成PWM /*需要必要的参数*/
/*配置TimerA PWM参数*/
Timer_A_PWMConfig pwmConfig =
{
TIMER_A_CLOCKSOURCE_SMCLK,
TIMER_A_CLOCKSOURCE_DIVDER_1,
32000,
TIMER_A_CAPTURECOMPARE_REGISTER_0,
TIMER_A_OUTPUTMODE_TOGGLE,
3200
};
参数详情:
typedef struct _Timer_A_PWMConfig
{
uint_fast16_t clockSource; //时钟资源,选取哪个时钟做定时器的来源,同430中的TASSELx
uint_fast16_t clockSourceDivider;//分频率
uint_fast16_t timerPeriod;//周期
uint_fast16_t compareRegister;//选取比较寄存器
uint_fast16_t compareOutputMode;//比较模块的输出模式
uint_fast16_t dutyCycle;//高电平 占
} Timer_A_PWMConfig;
/*配置TimerA PWM参数*/
/*程序实例*/
/* 配置 MCLK to REFO at 128Khz for LF mode
* 配置 SMCLK 为 64Khz */
MAP_CS_setReferenceOscillatorFrequency(CS_REFO_128KHZ);
MAP_CS_initClockSignal(CS_MCLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1);
MAP_CS_initClockSignal(CS_SMCLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_2);
MAP_PCM_setPowerState(PCM_AM_LF_VCORE0);
/* 将GPIO7.3设置为PWM输出引脚,P1.1位按键
* 中断 */
MAP_GPIO_setAsPeripheralModuleFunctionOutpu