找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2051|回复: 0
打印 上一主题 下一主题
收起左侧

stmf103的输出互补PWM波

[复制链接]
跳转到指定楼层
楼主
ID:328819 发表于 2018-7-21 20:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//TIM1_CH1 PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM1_PWM_Init(u16 arr,u16 psc)
{                           
    RCC->APB2ENR|=1<<11;   //TIM1时钟使能   
    RCC->APB2ENR|=1<<2;     //使能PORTA时钟         
    RCC->APB2ENR|=1<<3;     //使能PORTB时钟     
    RCC->APB2ENR|=1<<0;     //开启复用时钟   
     
    GPIOA->CRH&=0XFFFF0000;   //PA8,9,10,11清除之前的设置
    GPIOA->CRH|=0X0000BBBB;   //PA8,9,10,11复用功能输出
     
    GPIOB->CRH&=0X000FFFFF;  //PB13,14,15清除之前的设置
    GPIOB->CRH|=0XBBB00000;  //PB13,14,15复用功能输出
     
    GPIOB->ODR|=1<<13;       //PB13 输出上拉,低电平有效
    GPIOB->ODR|=1<<14;       //PB14
    GPIOB->ODR|=1<<15;       //PB15
    GPIOA->ODR|=1<<8;        //PA8
    GPIOA->ODR|=1<<9;        //PA9
    GPIOA->ODR|=1<<10;       //PA10
     
    TIM1->ARR=arr;           //设定计数器自动重装值     ①1
    TIM1->PSC=psc;           //预分频器设置             ②2
     
    TIM1->CCER|=1<<0;      //TIM1CH1 输出使能,高电平有效      ③3
    TIM1->CCER|=1<<4;      //TIM1CH2 输出使能
    TIM1->CCER|=1<<8;      //TIM1CH3 输出使能
    TIM1->CCER|=1<<12;      //TIM1CH4 输出使能
    TIM1->CCER|=1<<2;      //TIM1CH1N 互补输出使能
    TIM1->CCER|=1<<6;      //TIM1CH2N 互补输出使能
    TIM1->CCER|=1<<10;      //TIM1CH3N 互补输出使能
     
    TIM1->CCMR1|=7<<4;     //CH1 PWM2模式           ④4
    TIM1->CCMR1|=1<<3;     //CH1预装载使能   

    TIM1->CCMR1|=7<<12;    //CH2 PWM2模式         
    TIM1->CCMR1|=1<<11;    //CH2预装载使能   

    TIM1->CCMR2|=7<<4;     //CH3 PWM2模式         
    TIM1->CCMR2|=1<<3;     //CH3预装载使能  
  
    TIM1->CCMR2|=7<<12;    //CH4 PWM2模式         
    TIM1->CCMR2|=1<<11;    //CH4预装载使能   
     
        TIM1->BDTR|=0x14;       //死区时间设置          ⑤5
    TIM1->BDTR|=1<<15;     //MOE 主输出使能        ⑥6
    TIM1->CR1 |= 0x80;       //ARPE使能,开始所有输出通道,默认向上计数   ⑦7
    TIM1->CR1 |= 0x01;       //使能计数器                                          
}

int main(void)
{           
    Stm32_Clock_Init(9);       //系统时钟设置
    delay_init(72);             //延时初始化
    TIM1_PWM_Init(499,7199);    // 72M/7200=10khz, 1/10khz * 500=50ms   ⑧8
    while(1)
    {                    
        TIM1->CCR1=250;  //占空比:50%  低电平时长25ms   ⑨9
        TIM1->CCR2=125;  //占空比:75%  低电平时长12.5ms
        TIM1->CCR3=50;     //占空比:90% 低电平时长5ms
        TIM1->CCR4=25;     //占空比:95% 低电平时长2.5ms  
    }
}


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表