完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我参考原子哥的程序,然后自己写了个,第一次写的时候,配置大多是复制上次定时的代码,所以配置了定时中断(中断向量和中断使能都配置好了)。然后输出波形一直是高电平。把中断向量配置中的中断去掉后才现在正确的波形。
我的问题:为什么开启中断向量后,一直出现高电平? 下面是一直输出高电平的配置 void NVIC_Configuration(void) //NVIC配置 { NVIC_InitTypeDef NVIC_InitStruct; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //中断组0 NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0); //中断向量FLASH NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级0 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; //从优先级0 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //中断向量使能 NVIC_Init(&NVIC_InitStruct); } void TIM2_Configuration(void) //1m定时 { TIM_TimeBaseInitTypeDef TIM_BaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; TIM_BaseInitStruct.TIM_Period = 900; //重载值 TIM_BaseInitStruct.TIM_Prescaler = 0; //预分频值 TIM_BaseInitStruct.TIM_ClockDivision = 0; TIM_BaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数0 ~ Period TIM_TimeBaseInit(TIM2,&TIM_BaseInitStruct); //定时器寄存器初始化 TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2 TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 TIM_OCInitStruct.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值 TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高 TIM_OC2Init(TIM2, &TIM_OCInitStruct); //根据TIM_OCInitStruct中指定的参数初始化外设TIMx TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIMx在CCR2上的预装载寄存器 TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIMx在ARR上的预装载寄存器 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //TIM中断使能 TIM_Cmd(TIM2,ENABLE); //定时器使能 } 下面是输出正确波形的配置 void NVIC_Configuration(void) //NVIC配置 { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //中断组0 NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0); //中断向量FLASH } void TIM2_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_BaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; TIM_BaseInitStruct.TIM_Period = 900; //重载值 TIM_BaseInitStruct.TIM_Prescaler = 0; //预分频值 TIM_BaseInitStruct.TIM_ClockDivision = 0; TIM_BaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数0 ~ Period TIM_TimeBaseInit(TIM2,&TIM_BaseInitStruct); //定时器寄存器初始化 TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2 TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 TIM_OCInitStruct.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值 TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高 TIM_OC2Init(TIM2, &TIM_OCInitStruct); //根据TIM_OCInitStruct中指定的参数初始化外设TIMx TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIMx在CCR2上的预装载寄存器 TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIMx在ARR上的预装载寄存器 TIM_Cmd(TIM2,ENABLE); //定时器使能 } |
|
相关推荐
2个回答
|
|
是不是一中断后,就会重新配置,导致输出一直是高电平?
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1820 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1634 浏览 1 评论
1104 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
740 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1692 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
756浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
587浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
571浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 04:40 , Processed in 0.897428 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号