找回密码
 立即注册

QQ登录

只需一步,快速开始

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

萌新请教下关于STM32f407定时器2 PWM输出的周期问题

[复制链接]
跳转到指定楼层
楼主
请问下这段代码,通用定时器2,设置中心对齐PWM模式1,我设置ARR寄存器为10*1000,分频系数为5*1000,为什么出来的方波周期却是2S的?
        /*系统时钟频率为50MHZ*/
        RCC->CFGR |=  4 << 10;
        RCC->APB1ENR |= 1;/*使能TIM2时钟*/
        TIM2->CR1 = 0;
        TIM2->CR1 |= 1 << 7;/*ARPE,开启预装载寄存器缓冲*/
        TIM2->CR1 |= (0x01 << 5);/*CMS: Center-aligned mode selection set to 01: Center-aligned mode 1 the counter counts down.*/
        
        /*计数器50MHZ ==  每秒50 * 1000 * 1000次,分频系数为5000(从0开始所以要减一),故每秒10 * 1000等于一万次*/
        TIM2->ARR = 10000;/*预装载寄存器*/
        TIM2->DIER |= 1;//使能更新中断
        TIM2->PSC = 5000 - 1;/*设置定时器分频系数*/

        TIM2->CCMR1 = 0;
        TIM2->CCMR1 |= 1 << 3;/*OC1PE使能preload register*/
        TIM2->CCMR1 |= 6 << 4;/*OC1M Output compare 1 mode set to PWM mode 1*/
        TIM2->CCMR1 &= ~0x3;/*CC1 channel is configured as output*/
        TIM2->CCR1 = 2500;/*产生一个占空比为百分之25(2500 / 10000)的PWM波*/
        TIM2->CCER = 0;
        TIM2->CCER |= 1;/*CC1E: Capture/Compare 1 output enable*/

        TIM2->CR1 |= 1; /*使能定时器*/
        TIM2->EGR |= 1;/*产生UG更新事件*/
        TIM2->SR &= ~((u32)1);
        
        /*PA15-->TIM2_CH1配置*/
        RCC->AHB1ENR |= 1;/*使能GPIOA时钟源*/
        /*初始化GPIOA的IO口配置*/
        /*PA0为输出(系统默认推挽就不配置了)*/
  GPIOA->MODER |= ((u32)2 << 2 * 15);/*PA15配置为复用*/
  GPIOA->AFR[1] = 0;
        GPIOA->AFR[1] = 1 << 4 * 7;//AFRH15 AF1
图中每个格子为1S

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

使用道具 举报

沙发
ID:6656 发表于 2021-8-26 11:13 | 只看该作者
萌新请用库函数开发,更清晰明了,可移植性更好
回复

使用道具 举报

板凳
ID:628057 发表于 2021-8-26 15:34 | 只看该作者
yb1988001 发表于 2021-8-26 11:13
萌新请用库函数开发,更清晰明了,可移植性更好

这样啊,\(^o^)/~好
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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