最近在调试stm32的timer的比较输出,发现当cnt寄存器的值大于通道一的比较寄存器后,我量对应的输出脚没有发现电平由低变为高,我对照一遍st公司给的比较输出例程基本差不多,不知道怎么回事,用的是万利的EKSTM3210B开发板,CPU为stm32f103vb,使用stm32的TIM1,PA8就是通道一输出脚,程序代码如下:
void AdvanceTimerOCTest()
{
NVIC_InitTypeDef Timer1_OC_IT = {TIM1_CC_IRQn, 1, 0, ENABLE};
/*不分频,系统时钟为72MHZ*/
TIM_TimeBaseInitTypeDef Timer1 = {0, TIM_CounterMode_Up, 1000, TIM_CKD_DIV1, 0};
TIM_OCInitTypeDef Timer1_OC = {TIM_OCMode_Active, TIM_OutputState_Enable, TIM_OutputNState_Enable,
500, TIM_OCPolarity_High, TIM_OCNPolarity_Low, TIM_OCIdleState_Reset,
TIM_OCNIdleState_Reset};
GPIO_InitTypeDef GPIOA_8 = {GPIO_Pin_8, GPIO_Speed_50MHz, GPIO_Mode_AF_PP};
GPIO_InitTypeDef GPIOB_13 = {GPIO_Pin_13, GPIO_Speed_50MHz, GPIO_Mode_AF_PP};
/*初始化TIM1*/
TIM_DeInit(TIM1);
/*初始化GPIO*/
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
/*开启TIM1时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
/*开启GPIOA,GPIOC时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
GPIO_Init(GPIOA, &GPIOA_8);
GPIO_Init(GPIOB, &GPIOB_13);
/*设置TIM1*/
TIM_TimeBaseInit(TIM1, &Timer1);
TIM_OC1Init(TIM1, &Timer1_OC);
/*TIM8更新中断设置*/
NVIC_Init(&Timer1_OC_IT);
/*TIM8更新中断设置*/
TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);
/*已将DBG模块中的TIM1_STOP位为0*/
TIM_Cmd(TIM1, ENABLE);
}
在PA8脚上没有电平变化啊 |