OpenEdv-开源电子网

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

急!在线等:定时器问题,弄了一下午,还是没解决!

[复制链接]

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
发表于 2013-8-26 19:26:25 | 显示全部楼层 |阅读模式

我是设想用定时器来改变while()死循环的标志位,来实现连续打印5秒“Hello world”后退出循环。但不知道哪里出错了,代码如下


bool TIMER4_FLAG = 1;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
 
TIM4_Int_Init(49999,7199);

while(TIMER4_FLAG == 1)
{
     CONSOLE_PRINT("Hello World...");
     CONSOLE_PRINT("\n\r");   
}

void TIM4_Int_Init(uint32_t arr,uint32_t psc)
{
     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
     NVIC_InitTypeDef NVIC_InitStructure;

     DISABLE_IRQ_SAVE();
       
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //时钟使能
 
    //定时器TIM4初始化
    TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 
    TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
    TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
 
    TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //使能指定的TIM4中断,允许更新中断

    //中断优先级NVIC设置
    NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;  //TIM4中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
    NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器


    TIM_Cmd(TIM4, ENABLE);  //使能TIMx 
        
    ENABLE_IRQ_SAVE();
}

//定时器4中断服务程序
void TIM4_IRQHandler(void)   //TIM4中断
{
    if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
   {
       TIM_ClearITPendingBit(TIM4, TIM_IT_Update);  //清除TIMx更新中断标志
       TIMER4_FLAG = 0;
       STOP_TIMER4();        //关掉定时器
                
       CONSOLE_PRINT("退出中断服务程序...");
       CONSOLE_PRINT("\n\r");
   }
}



 

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

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-8-26 21:29:26 | 显示全部楼层
我感觉没问题啊。。。。是不是其他地方配置有问题?
另外请问你是添加了什么头文件才可以使用bool类型?
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-26 21:49:59 | 显示全部楼层
bool 前加violate试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-8-27 01:12:49 | 显示全部楼层
“急!在线等”——这个别人还真的是不急的。看看提问的智慧吧。
业余程序玩家。
回复 支持 反对

使用道具 举报

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
 楼主| 发表于 2013-8-27 08:56:37 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥,volatile 加了,还是不行。我后来调试发现,只要一执行完TIM4_Int_Init(4999,7199); 它的中断服务程序TIM4_IRQHandler()里面的CONSOLE_PRINT("退出中断服务程序...") 就会打印到串口,说明定时器根本没有起作用。怎么解决呀,我找了半天也没找到原因?
回复 支持 反对

使用道具 举报

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
 楼主| 发表于 2013-8-27 08:57:13 | 显示全部楼层
回复【2楼】wghfbj:
---------------------------------
前辈,后来调试发现,只要一执行完TIM4_Int_Init(4999,7199); 它的中断服务程序TIM4_IRQHandler()里面的CONSOLE_PRINT("退出中断服务程序...") 就会打印到串口,说明定时器根本没有起作用。是什么原因?
回复 支持 反对

使用道具 举报

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
 楼主| 发表于 2013-8-27 09:12:12 | 显示全部楼层
回复【4楼】ofourme:
---------------------------------
蜘蛛侠帮帮忙呀!我找不出问题
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-27 10:46:48 | 显示全部楼层
回复【7楼】servent:
---------------------------------
仿真看看问题出在哪吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-8-27 13:47:16 | 显示全部楼层
回复【6楼】servent:
---------------------------------
那就在 TIM_Cmd(TIM4, ENABLE)开启中断前,先清除中断标志位
业余程序玩家。
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-8-27 14:20:06 | 显示全部楼层
回复【6楼】servent:
---------------------------------
看下蜘蛛侠的方法是否好用,如果不好用你就把整个工程打包传上来下吧。
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-8-27 14:21:00 | 显示全部楼层
回复【楼主位】servent:
---------------------------------
你还没回答我问题呢。。。。。。
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 12:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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