1、使用芯片STM32F103VC
2、打开MXCube新建工程
3、配置下载模式为SW,外部晶振8M,主频72M
4、配置高级定时器1,使用内部晶振,开启互补PWM输出模式
5、配置载波频率10k,即周期为10us
(定时周期 = (Prescaler + 1) × (Period + 1) ÷ 时钟频率
单位:秒(S))
时钟频率72MHz = 72 ×
10^6(Hz)
故:Prescaler + 1 = 72
Period + 1 = 100
选择先上升后下降模式,即模式3
并自动装载
6、选择死区时间
7、配置初始PWM都为50%
8、开启定时中断
9、保存,并代码生成
10、打开工程
加入代码如下:
__HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE);//启用前清除TIM中断标志位
__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);//启用前清除TIM中断
HAL_TIM_Base_Start_IT(&htim1);//开启TIM计数
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);//开启互补pwm
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//|TIM_CHANNEL_2|TIM_CHANNEL_3);
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_2);//开启互补pwm
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);//|TIM_CHANNEL_2|TIM_CHANNEL_3);
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_3);//开启互补pwm
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);//|TIM_CHANNEL_2|TIM_CHANNEL_3);
定时器回调函数
//TIM定时返回函数
void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim)//回调函数
{
if(htim->Instance == TIM1)//判断进入定时1通道回调函数
{
}
}
11、MDK仿真配置
12、开启软件仿真
13、 开启逻辑分析
14、建立IO信息读取