打印

中断优先级设定之后没有返回

[复制链接]
223|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第十代火影|  楼主 | 2019-11-25 07:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,在开发板上修改例程的时候出现的问题。都搞了我一个多星期了事情是这样的,在《ADC实验(DMA方式)》中把《呼吸灯》的代码加入。
其实《呼吸灯》的主函数就只有TIM3_Breathing_Init();一条函数调用,
然后就进入死循环,其它事情就交给定时器中断输出PWM。
问题就出在定时器中断上面,定时器中断的一设定优先级之后无法跳出,
所以主函数中与ADC、串口相关的函数都没有办法调用。

在调用NVIC_Init(&NVIC_InitStructure)对定时器设定优先级后没有返回(用ULINK2调试)。我调试的代码如下:
        printf("\r\n ----这是一个ADC实验4----\r\n");
        NVIC_Init(&NVIC_InitStructure);
        printf("\r\n ----这是一个ADC实验5----\r\n");

串口调试助手显示:
----这是一个ADC实验4----


之前以为是中断导致串口通讯不可用,后来发现在设定中断优先级NVIC_Init之后函数根本没有返回,

以下是配置中断优先级的代码:
static void NVIC_Config_PWM(void)
{
  //中断优先级配置结构体
  NVIC_InitTypeDef NVIC_InitStructure;
  //配置中断优先级分组1
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  //配置中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  printf("\r\n ----这是一个ADC实验4----\r\n");
  NVIC_Init(&NVIC_InitStructure);
  printf("\r\n ----这是一个ADC实验5----\r\n");        

}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

363

主题

363

帖子

0

粉丝