TIMER模块PWM功能

Overview

以 AC638N 为例,提供TIMER模块PWM功能的应用示例、工程配置、API 介绍和常见问题。

应用示例

  • TIMER模块PWM功能的具体源代码详见 sdk/bsp/AC638N/src/timer_pwm.c

  • timer_pwm.c 中参考示例如下:

    void timer_pwm_test(void)
    {
        log_info("*********** timer pwm test *************");
    
        timer_pwm_init(JL_TIMER4, IO_PORTC_02, 1000, 5000); //1KHz 50%
        timer_pwm_init(JL_TIMER5, IO_PORTC_03, 10000, 7500);//10KHz 75%
    
        extern void wdt_clr();
        while (1) {
            wdt_clr();
        }
    }
    

工程配置

  • sdk/apps/main.c 中函数 user_main() 添加如下工程代码:

    int user_main()
    {
        extern void timer_pwm_test(void);
        timer_pwm_test();
    }
    
  • 编译下载后,PC2 和 PC3连接示波器,观察是否符合如下期望输出:

    PC2

    1KHz50%

    PC3

    10KHz75%

API参考

TIMER模块PWM功能常用相关 API 介绍,具体软件代码见 sdk/bsp/AC638N/src/timer_pwm.c

Functions

void timer_pwm_init(JL_TIMER_TypeDef *JL_TIMERx, u32 pwm_io, u32 fre, u32 duty)

timer_pwm初始化函数

Parameters:
  • JL_TIMERx – JL_TIMER0/1/2/3/4/5

  • pwm_io – JL_PORTA_01, JL_PORTB_02,,,等等,支持任意普通IO

  • fre – 频率,单位Hz

  • duty – 初始占空比,0~10000对应0~100%

void set_timer_pwm_duty(JL_TIMER_TypeDef *JL_TIMERx, u32 duty)

timer_pwm改变占空比函数

Parameters:
  • JL_TIMERx – JL_TIMER0/1/2/3/4/5

  • duty – 占空比,0~10000对应0~100%

void timer_pwm_test(void)

timer_pwm参考示例