OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3001|回复: 1

STM32 TIM1定时器PWM问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2014-1-17
在线时间
5 小时
发表于 2016-10-23 21:16:15 | 显示全部楼层 |阅读模式
1金钱
用的是STM32战舰开发板:没设置TIM1_BDTR,TIM1_CCER,均为默认值0
问题1:有占空比50%的互补方波输出,将红色语句(设置OISx,OISxN)去掉,则没有方波输出,为低电平。没有开MOE,CCER没有使能,设置OISx,OISxN,可以控制方波输出??
      2:模拟仿真则不会出现这种情况
#include "sys.h"
#include "usart.h"
#include "delay.h"

int main(void)  
{         
Stm32_Clock_Init(9); //系统时钟设置  
delay_init(72);      //延时初始化         
RCC->APB2ENR|=1<<11;  //TIM1时钟使能
RCC->APB2ENR|=1<<2;  //使能IO口A时钟
RCC->APB2ENR|=1<<3;  //使能IO口B时钟      
GPIOB->CRH&=0X000FFFFF;  // 清除PB13,PB14,PB15状态寄存器位
GPIOB->CRH|=0XBBB00000;  // PB13,PB14,PB15复用功能输出  
GPIOA->CRH&=0XFFFFF000;  //清除PA8,PA9,PA10状态寄存器位
GPIOA->CRH|=0X00000BBB;  //PA8,PA9,PA10复用功能输出

TIM1->CR2|=1<<8|1<<10|1<<12;  //设置OISx,OISxN  
TIM1->ARR=100;  //设定计数器自动重装值   
TIM1->PSC=179;  //180分频
                 
TIM1->CCMR1|=7<<4;  //CH1 PWM1模式  
TIM1->CCMR1|=1<<3; //CH1预装载使能
TIM1->CCMR1|=7<<12;  //CH2 PWM1模式      
TIM1->CCMR1|=1<<11; //CH2预装载使能
TIM1->CCMR2|=7<<4;  //CH3 PWM1模式  
TIM1->CCMR2|=1<<3; //CH3预装载使能

TIM1->CR1|=1<<7;  //ARPE使能自动重装载预装载允许位   
TIM1->CR1|=1<<4;  //向下计数模式   
TIM1->CCR1 = 50;    //设定占空比50%   
TIM1->CCR2 = 50;  
TIM1->CCR3 = 50;   
TIM1->EGR |= 1<<0;  //初始化所有的寄存器   
TIM1->CR1|=1<<0;    //使能定时器1   

while(1);
}

最佳答案

查看完整内容[请看2#楼]

参考手册上有写,没注意
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2014-1-17
在线时间
5 小时
 楼主| 发表于 2016-10-23 21:16:16 | 显示全部楼层
本帖最后由 雾里奇 于 2016-10-24 21:02 编辑

参考手册上有写,没注意
11.jpg
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 06:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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