tohturusul 发表于 2023-9-5 12:32:33

PWM的应用

本帖最后由 tohturusul 于 2023-9-5 12:40 编辑

PWM实现的步骤如下四种
1. 时钟源选择
    时钟源选择,这里默认为22.1184mHZ
2. 时基单元
PWMA_PSCRH = 0;                //1分频
PWMA_PSCRL = 0;

PWMA_ARRH = (u8)(PWM_ARR>>8);
PWMA_ARRL = (u8)(PWM_ARR);

PWMA_CCR1H = (u8)(PWM_CCR>>8);
PWMA_CCR1L = (u8)(PWM_CCR);3. 输入输出的引脚配置
PWMA_ENO = 0X00;                        //使能PWM1p通道输出
PWMA_ENO |= 0X01;
      
PWMA_PS =0x00;                              //选择PWM1从P60引脚输出
PWMA_PS |= (2<<0);4.输入输出模式设置
PWMA_CCER1 = 0X00;
PWMA_CCMR1 = 0X68;                        //pwm模式1 配置置位输出
PWMA_CCER1 = 0x01;                        //开启输出比较通道

PWMA_BKR = 0X80;                        //使能主输出
PWMA_CR1 |= 0X01;                        //启动计数器上面演示的是示波器显示的代码,下面灯的点亮来判断的代码是否正确的案例
注意:步骤的前两个一样。
3.输入输出的引脚配置

PWMA_ENO = 0X00;                        //使能PWM1n通道输出
PWMA_ENO |= 0X02;
      
PWMA_PS =0x00;                              //选择PWM1从P60引脚输出
PWMA_PS |= (2<<0);      注意:如果是用的时候屠龙刀三.2 的话使用下面的代码。能点亮P2.1灯的话,表示你的代码正确。

PWMA_ENO = 0X00;                        //使用PWM1通道输出
PWMA_ENO |= 0X02;                        // 如果是点亮灯设置0X02

PWMA_PS = 0X00;                              //选择PWM1从P20引脚输出
PWMA_PS |= (1<<0);                        // 点亮P2.1灯4.输入输出模式设置

PWMA_CCER1 = 0X00;
PWMA_CCMR1 = 0X68;                        //pwm模式1 配置置位输出
PWMA_CCER1 = 0x04;                        //开启输出比较通道
      
PWMA_BKR = 0X80;                        //使能主输出
PWMA_CR1 |= 0X01;                        //启动计数器注意:如果是用的时候屠龙刀三.2 的话使用下面的代码。能点亮P2.1灯的话,表示你的代码正确。

PWMA_CCER1 = 0X00;
PWMA_CCMR1 = 0X68;                        //pwm模式1 配置置位输出
PWMA_CCER1 = 0x04;                        //开启输出比较通道
      
PWMA_BKR = 0X80;                        //使能主输出
PWMA_CR1 |= 0X01;                        //启动计数器

总代码
void Pwm_Init(void)                        //PWMA的初始化
{
      //1.时钟源选择这里不改,默认22.1184mhz
      
      //2.时基单元选择
      PWMA_PSCRH = 0;                              //1分频
      PWMA_PSCRL = 0;
      
      PWMA_ARRH= (u8)(PWM_ARR>>8);
      PWMA_ARRL= (u8)(PWM_ARR);
      
      PWMA_CCR1H= (u8)(PWM_CCR>>8);
      PWMA_CCR1L= (u8)(PWM_CCR);      
      
      
      //3.输入输出的引脚配置
      PWMA_ENO = 0X00;                        //使能PWM1p通道输出
      PWMA_ENO |= 0X02;
      
      PWMA_PS =0x00;                              //选择PWM1从P60引脚输出
      PWMA_PS |= (1<<0);      
      
      //4.输入输出模式设置
      PWMA_CCER1 = 0X00;
      PWMA_CCMR2 = 0X68;                        //pwm模式1 配置置位输出
      PWMA_CCER1 = 0x04;                        //开启输出比较通道
      
      PWMA_BKR = 0X80;                        //使能主输出
      
      PWMA_CR1 |= 0X01;                        //启动计数器
}

把这个函数调用到主函数里面使用就可以啦。

lclbf 发表于 2024-11-5 08:25:42

好文章,已收藏学习。
页: [1]
查看完整版本: PWM的应用