芯片型號: STM32L051C8T6
通道 :TIM22_CH2
輸出引腳:PA7
知識回顧,要使用PWM功能,必須要在通用定時器配置才行,基本定時器是沒有PWM這個功能的。
1) 通用定時器(TIM2/3,TIM21/22)
2) 基本定時器(TIM6/7)
引腳配置
1、STM32CubeMx配置(注:佔空比參數不需要填,默認即可)
2、main.c文件 代碼
/* USER CODE BEGIN 1 */
uint16_t dutycycle=0;
/* USER CODE END 1 */
/* USER CODE BEGIN 2 */
// HAL_TIM_PWM_Start(&htim22, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim22, TIM_CHANNEL_2);
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
while(dutycycle<1000)
{
dutycycle++;
// __HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_1,dutycycle); //庫操作方式
__HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_2,dutycycle); //庫操作方式
// TIM22->CCR2 = dutycycle; //寄存器操作方式
HAL_Delay(1);
}
while(dutycycle)
{
dutycycle--;
// __HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_1,dutycycle); //庫操作方式
__HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_2,dutycycle); //庫操作方式
// TIM22->CCR2 = dutycycle; //寄存器操作方式
HAL_Delay(1);
}
HAL_Delay(100);
// HAL_TIM_PWM_Stop(&htim22, TIM_CHANNEL_1); //這裏根據具體情況來定,禁用pwm
// HAL_TIM_PWM_Stop(&htim22, TIM_CHANNEL_2); //
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
PWM頻率 = 系統時鐘32MHZ/32/1000 = 1000HZ
佔空比 = 脈寬值(Pulse)/裝載值(Period)*100% = 999/1000 * 100% = 99.9%
3、LED呼吸燈效果
代碼鏈接 (注:代碼中,漏了配置佔空比參數 ) sConfigOC.Pulse = 999;