OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3753|回复: 7

配置完中断向量后程序无法继续运行

[复制链接]

12

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-3-21
在线时间
0 小时
发表于 2015-12-25 17:47:51 | 显示全部楼层 |阅读模式
5金钱
使用了ucos II,进行中断向量 NVIC_Configuration() 配置之后,程序跳到了 startup_stm32f10x_hd.s 中死循环。注释掉中断向量配置函数 NVIC_Configuration() 则能正常运行。
求各位大神讲解。


serioly every minute
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-12-25 18:13:38 | 显示全部楼层
有没有配置定时器2和3的更新中断,有没有写中断服务函数?
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-12-25 18:56:26 | 显示全部楼层
EXPORT  TIM3_IRQHandler            [WEAK]   启动函数里面用了弱定义,如果你外面使能了中断又没有定义中断服务函数(或服务函数的名字没写对) 就会进Default_Handler,里面是个死循环,不知道你是不是这个问题
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

12

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-3-21
在线时间
0 小时
 楼主| 发表于 2015-12-25 19:03:42 | 显示全部楼层
回复【3楼】229382777@qq.com:
---------------------------------
之前我没在ucos上使用过中断,对ucos上的中断要具体怎么使用并不了解。刚搜了搜才知道用系统的中断和裸机的中断配置不一样。而网上的人的说的配置过程也是各说各的,具体需要注意的地方也很难归总,你能跟我说用了ucos应怎么配置吗?最好用一个例子讲解,谢谢
serioly every minute
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-12-25 19:18:41 | 显示全部楼层
回复【4楼】wzmin:
---------------------------------
不知道你用了ucos,这个帮不了,我也正在学ucos
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

12

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-3-21
在线时间
0 小时
 楼主| 发表于 2015-12-25 19:30:12 | 显示全部楼层
回复【5楼】229382777@qq.com:
---------------------------------
好的。还是谢谢你的回复
serioly every minute
回复

使用道具 举报

12

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-3-21
在线时间
0 小时
 楼主| 发表于 2015-12-26 13:30:56 | 显示全部楼层
229382777@qq.co 发表于 2015-12-25 19:18
回复【4楼】wzmin:
---------------------------------
不知道你用了ucos,这个帮不了,我也正在学ucos

找到原因了,少定义了一个中断服务函数,还有还需在中断服务添加两条语句即可。

void TIM2_IRQHandler(void)
{
        OSIntEnter();             //使用了 ucos 时需要添加该语句

        if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)
    {
                          TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
                                times++;
    }

        OSIntExit();             //使用了 ucos 时需要添加该语句
}
serioly every minute
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-12-26 13:36:46 | 显示全部楼层
wzmin 发表于 2015-12-26 13:30
找到原因了,少定义了一个中断服务函数,还有还需在中断服务添加两条语句即可。

void TIM2_IRQHandler ...

一般都是你开启了中断却又没定义中断服务函数才会进Default_Handler,里面是个死循环
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 16:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表