OpenEdv-开源电子网

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

UCOSII硬件定时器TIM7求助

[复制链接]

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
发表于 2017-3-6 23:42:51 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 HUSTPY 于 2017-3-7 12:40 编辑

我在UCOSII里面进行TIM7定时中断出了问题,debug发现,在初始化定时器的时候,程序运行到配置NVIC,初始化NVIC结构体过后就死了,不知道是什么原因。程序是把原子哥的例程,UCOS综合测试里面的定时器7的程序稍加改动,执行NVIC_Init(&NVIC_InitStructure);过后就进入了图片中的死循环。
1JPG.JPG
2.JPG

最佳答案

查看完整内容[请看2#楼]

终于解决了,上图的错误是有未处理的中断。是我用C,C++混合编程,导致编译器不能识别中断函数。解决办法是在C++文件中的中断函数前面加上 一句 extern "C"
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
 楼主| 发表于 2017-3-6 23:42:52 | 显示全部楼层
本帖最后由 HUSTPY 于 2017-3-10 23:05 编辑

终于解决了,上图的错误是有未处理的中断。是我用C,C++混合编程,导致编译器不能识别中断函数。解决办法是在C++文件中的中断函数前面加上 一句    extern "C"
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-3-7 09:29:43 | 显示全部楼层
硬件调试检查是到哪一行程序死机的,然后分析代码
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
 楼主| 发表于 2017-3-7 12:41:37 | 显示全部楼层
zuozhongkai 发表于 2017-3-7 09:29
硬件调试检查是到哪一行程序死机的,然后分析代码

我把图片发上来了,调试到图片2中的那一步后进入图一的界面,在那里死了
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
 楼主| 发表于 2017-3-7 12:42:34 | 显示全部楼层
zuozhongkai 发表于 2017-3-7 09:29
硬件调试检查是到哪一行程序死机的,然后分析代码

执行这个NVIC_Init(&NVIC_InitStructure);后死了
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
 楼主| 发表于 2017-3-7 12:45:11 | 显示全部楼层
void Timer7_Init(u16 arr,u16 psc)
{
         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);  ///ê1ÄüTIM3ê±Öó
       
  TIM_TimeBaseInitStructure.TIM_Period = arr;         //×Ô¶ˉÖØ×°ÔØÖμ
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc;  //¶¨ê±Æ÷·ÖÆμ
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //ÏòéϼÆêyÄ£ê½
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
       
        TIM_TimeBaseInit(TIM7,&TIM_TimeBaseInitStructure);//3õê¼»ˉTIM3
       
        TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE); //ÔêDí¶¨ê±Æ÷3¸üDÂÖD¶Ï
        TIM_Cmd(TIM7,ENABLE); //ê1Äü¶¨ê±Æ÷4
       
        NVIC_InitStructure.NVIC_IRQChannel=TIM7_IRQn; //¶¨ê±Æ÷4ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; //ÇàÕ¼óÅÏ輶1
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //×óóÅÏ輶3
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);
       
}

void TIM7_IRQHandler(void)
{        
        OSIntEnter();        //½øèëÖD¶Ï
        if (TIM_GetITStatus(TIM7, TIM_IT_Update)==SET)//êǸüDÂÖD¶Ï
        {                                
                OSSemPost(MotorTick);
                 
        }         
        TIM_ClearITPendingBit(TIM7, TIM_IT_Update  );  //Çå3yTIM7¸üDÂÖD¶Ï±êÖ¾   
        OSIntExit();//′¥·¢èÎÎñÇD»»èíÖD¶Ï       
}


这是代码
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-3-7 22:26:53 | 显示全部楼层
不用OS正 常么
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
 楼主| 发表于 2017-3-7 23:17:46 | 显示全部楼层

正常,亲测可用,这个就是原子哥的例程
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 19:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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