输出比较的8钟模式

输出时的CH1,为正极性,信号原样输出
输出时的CH1N,为负极性,信号取反输出
通道的使用方法

最上面的三个选项都是Input Capture(输入捕获)
PWM Generation 代表PWM的产生,和PWM1和PWM2有关
Forced Output 代表强制输出,和Force Active或Force Inactive有关
Output Compare代表除PWM外的其他6种模式
| 模式 | 含义 |
|---|---|
| No Output | 两种输出都禁止 |
| CHx | 只使能正常输出 |
| CHxN | 只使能互补输出 |
| CHx CHxN | 两种输出都使能 |
常用函数
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t CHANNEL)
作用:启动PWM正常输出参数htim:填写定时器句柄指针。例如:&htim1参数CHANNEL:通道,例如TIM_CHANNEL_1
HAL_StatusTypeDef HAL_TIMEx_PWM_Start(TIM_HandleTypeDef *htim, uint32_t CHANNEL)
作用:启动PWM互补输出参数htim:填写定时器句柄指针。例如:&htim1参数CHANNEL:通道,例如TIM_CHANNEL_1
__HAL_TIM_GET_PRESCALER(__HANDLE__)
作用:读PSC预分频器
__HAL_TIM_SET_PRESCALER(__HANDLE__, __VAL__)
作用:写PSC预分频器
__HAL_TIM_GET_COUNTER(__HANDLE__)
作用:读CNT计数器__HAL_TIM_SET_COUNTER(__HANDLE__, __VAL__)
作用:写CNT计数器
__HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__)
作用:读CCR重复计数器__HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __VAL__)
作用:写CCR重复计数器
示例:呼吸灯正常输出和互补输出
123456789101112131415 | /* USER CODE BEGIN WHILE */HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);//启动正常输出HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);//启动互补输出 while (1) { float t = HAL_GetTick() * 0.001;//获取当前时间 float duty = 0.5 * sin(2*3.14*t)+0.5;//计算占空比 uint16_t arr = __HAL_TIM_GetAutoreload(&htim1); uint16_t ccr = duty * (arr + 1);//计算CCR寄存器的值 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, ccr);//计算结果写入ccr /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } |