想用stm32h743来控制步进马达,用寄存器方式,设置TIM17输出PWM波形,并在中断中计数发出的脉冲个数,用定时器2,3,4,5,都可以设置成功,可是定时器15,16,17可以进中断,但就是无法输出脉冲波形,有哪位高手能否帮看下,我的程序到底那错了吗?
//定时器17中断服务程序
void TIM17_IRQHandler(void)
{
if(TIM17->SR&0X0001)//溢出中断
{
LED0(led0sta^=1);
TIM17->ARR=999; //设定计数器自动重装值
TIM17->CCR1=99/2; //脉宽
}
TIM17->SR&=~(1<<0);//清除中断标志位
}
void TIM_PWM_Init()
{
//------------------------------------------------------------------------------------------------------
// RCC AHB4 外设复位寄存器
//31:NC 30:NC 29:NC 28:NC 27:NC 26:NC 25:HSEM 24:ADC3
//23:NC 22:NC 21:BDMA 20:NC 19:CRC 18:NC 17:NC 16:NC
//15:NC 14:NC 13:NC 12:NC 11:NC 10:GPIOK 9:GPIOJ 8:GPIOI
// 7:GPIOH 6:GPIOG 5:GPIOF 4:GPIOE 3:GPIOD 2:GPIOC 1:GPIOB 0:GPIOA
//------------------------------------------------------------------------------------------------------
RCC->AHB4ENR|=1<<5; //使能PORTF时钟
RCC->AHB4ENR|=1<<6; //使能PORTG时钟
// 定时器17 PWM CH1 PF7推挽输出
GPIO_Set(GPIOF,PIN7,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);//复用功能,上拉输出
GPIO_AF_Set(GPIOF,7,1); //PF7,AF1
//------------------------------------------------------------------------------------------------------
// RCC APB2L 外设复位寄存器
//31:NC 30:NC 29:HRTIM 28

FSDM1 27:NC 26:NC 25:NC 24:SAI3
//23:SAI2 22:SAI1 21:NC 20:SPI5 19:NC 18:TIM17 17:TIM16 16:TIM15
//15:NC 14:NC 13:SPI4 12:SPI1 11:NC 10:NC 9:NC 8:NC
// 7:NC 6:NC 5:USART6 4:USART1 3:NC 2:NC 1:TIM8 0:TIM1
//------------------------------------------------------------------------------------------------------
RCC->APB2ENR|=1<<18; //使能17时钟
TIM17->CCMR1|=6<<4; //CH1 PWM1模式
TIM17->CCMR1|=1<<3; //CH1 预装载使能
TIM17->CCER|=1<<1; //OC1 低电平有效
TIM17->CCER|=1<<0; //OC1 输出使能
//-----------------------------------------------------------------
// 定时器分频设置
//------------------------------------------------------------------
// 定时器17是16位定时器,时钟是200M 分频器是200,定时时钟是1M 最大定时时间是 65536us
TIM17->ARR=999; //设定计数器自动重装值
TIM17->

SC=1; //预分频器不分频
MY_NVIC_Init(1,3,TIM17_IRQn,2); //抢占1,子优先级3,组2
TIM17->DIER|=1<<0; //允许更新中断
TIM17->CR1|=1<<7; //ARPE使能
TIM17->CR1|=1<<0; //使能定时器17
}
一周热门 更多>