main.c 里面编写如下代码
- int main(void)
- {
- uint16_t ledrpwmval = 0;
- uint8_t dir = 1;
- HAL_Init(); /* 初始化 HAL 库 */
- sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟, 168Mhz */
- delay_init(168); /* 延时初始化 */
- usart_init(115200); /* 串口初始化为 115200 */
- led_init(); /* 初始化 LED */
- /* 168M/168=1M 的计数频率,自动重装载为 500,那么 PWM 频率为 1M/500=2kHz */
- gtim_timx_pwm_chy_init(500 - 1, 168 - 1);
- while (1)
- {
- delay_ms(10);
- if (dir)ledrpwmval++; /* dir==1 ledrpwmval 递增 */
- else ledrpwmval--; /* dir==0 ledrpwmval 递减 */
- if (ledrpwmval > 300)dir = 0; /* ledrpwmval 到达 300 后,方向为递减 */
- if (ledrpwmval == 0)dir = 1; /* ledrpwmval 递减到 0 后,方向改为递增 */
- /* 修改比较值控制占空比 */
- __HAL_TIM_SET_COMPARE(&g_timx_pwm_chy_handle, GTIM_TIMX_PWM_CHY,
- ledrpwmval);
- }
- }
|