OpenEdv-开源电子网

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

stm32f101定时器2的问题

[复制链接]

20

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2015-7-3
在线时间
55 小时
发表于 2018-6-22 11:32:36 | 显示全部楼层 |阅读模式

最近刚接一个项目,使用的是stm32f101rbt6单片机,现在遇到个问题,在没有开启TIM2的时候,或者说是在没有将TIM2的初始化程序放在main函数中,程序可以正常运行,显示器亦可以正常显示。但是在我把TIM2初始化程序添加到main函数中后,程序可以编译成功,但是显示器已经不能正常显示,而且通过debug,发现程序根本无法全速运行,全速运行按钮常亮不能变会。初始化程序应该没有错误,包括定时器初始化,NVIC初始化,定时器中断程序,等等,都是之前我用过的代码,就是添加到该工程之后就会出现这种问题。贴出定时器代码,哪位帮忙指导一下:

void timer_config(void)
{
        TIM_TimeBaseInitTypeDef                TIM_TimeBaseStructure;
        NVIC_InitTypeDef                        NVIC_init_structure;
       
        /*************TIMER2配置*********************/
        //10ms中断
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
       
        TIM_DeInit(TIM2);
    TIM_TimeBaseStructure.TIM_Period = 9999;
    TIM_TimeBaseStructure.TIM_Prescaler = 35;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
       
        /*预先清除所有中断位*/
    TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
        /*TIM2溢出中断使能        */
        TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE );
        /*TIM2使能        */
        TIM_Cmd(TIM2, ENABLE);
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                //nvic 分组为group2,2位抢占优先级,2位响应优先级
       
        NVIC_init_structure.NVIC_IRQChannel = TIM2_IRQn;
        NVIC_init_structure.NVIC_IRQChannelPreemptionPriority = 0x02;
        NVIC_init_structure.NVIC_IRQChannelSubPriority = 0x02;
        NVIC_init_structure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_init_structure);

}

void TIM2_IT_Handler(void)
{
       
//        static uint_s16 uled_counter;
//        static uint_s16 release_counter;
       
        if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)        //10ms进一次中断
        {
                TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
        }

}


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

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-6-22 16:38:33 | 显示全部楼层
把定时器程序单独测试下,看看有没有问题?
回复 支持 反对

使用道具 举报

20

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2015-7-3
在线时间
55 小时
 楼主| 发表于 2018-6-25 11:03:33 | 显示全部楼层
HXYDJ 发表于 2018-6-22 16:38
把定时器程序单独测试下,看看有没有问题?

单独拿出来也不好使,只要增加了中断向量分组那一段代码,debug模式下就无法全速运行
回复 支持 反对

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-6-25 11:15:49 | 显示全部楼层
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);分组优先级只能设置一次,设置好之后不能修改。一般都在main函数最开始的时候设置,设置好分组优先级之后在初始化其他设备。估计是你设置分组优先级的时候影响了。
回复 支持 反对

使用道具 举报

20

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2015-7-3
在线时间
55 小时
 楼主| 发表于 2018-6-25 11:21:52 | 显示全部楼层
HXYDJ 发表于 2018-6-25 11:15
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);分组优先级只能设置一次,设置好之后不能修改。一般都在 ...

能否加个QQ好友,方便沟通。1849962273,谢谢
回复 支持 反对

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-6-25 11:24:05 | 显示全部楼层
路世英 发表于 2018-6-25 11:21
能否加个QQ好友,方便沟通。1849962273,谢谢

把优先级分组那段代码放在main函数最开始的位置,或者屏蔽掉试试。
回复 支持 反对

使用道具 举报

20

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2015-7-3
在线时间
55 小时
 楼主| 发表于 2018-6-25 11:38:01 | 显示全部楼层
HXYDJ 发表于 2018-6-25 11:24
把优先级分组那段代码放在main函数最开始的位置,或者屏蔽掉试试。

已经放过去了,但是问题依旧
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 08:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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