新手入门
- 积分
- 29
- 金钱
- 29
- 注册时间
- 2014-1-17
- 在线时间
- 5 小时
|
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);
}
|
|