接线图:
PWMI基本结构
代码配置:
与上一章输入捕获代码一样,根据结构体,需要在输入捕获单元再配置一个通道。我们调用一个函数
这个函数可以给结构体赋值,当我们定义了一遍结构体参数,再调用这个函数,就可以再定义一边参数并取反。通过这个函数可以快捷实现定义其他参数。
void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
功能代码:
实现测量占空比,高电平的计数值存在CCR2里,整个周期的计数值存在CCR1里,我们用CCR2 / CCR1,就能得到占空比
//测量占空比
uint32_t IC_GetDuty(void)
{
return (TIM_GetCapture2(TIM3) + 1) * 100 / (TIM_GetCapture1(TIM3) + 1);
}
主函数:
#include "IC.h"
int main(void)
{
OLED_Init();
PWM_Init();
IC_Init();
OLED_ShowString(1, 1, "Freg:00000Hz");
OLED_ShowString(2, 1, "Duty:00%");
PWM_SetPrescaler(720 - 1); //Freq = 72M / (PSC + 1) / 100
PWM_SetCompare(50); //Duty = CCR / 100
while(1)
{
OLED_ShowNum(1, 6, IC_GetFreq(), 5);
OLED_ShowNum(2, 6, IC_GetDuty(), 2);
}
}