OpenEdv-开源电子网

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

通用定时器遇到的一些问题

[复制链接]

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
发表于 2012-5-26 10:02:11 | 显示全部楼层 |阅读模式

这个是根据不完全手册上的教程提供的代码写的定时器3的程序,在板子上调试过可以,当我把定时器3改为定时器2和定时器4时,在板子上也是运行正确的
然而,当我把定时器3改为定时器5的时候,在板子上却出错了,LED1一直都是不亮的状态,另外LED0也是一直熄灭,没有闪烁
为什么会这样子呢??小弟是新手啊。
#include "timer.h"
#include "led.h"
//Mini STM32开发板
//通用定时器驱动代码
//正点原子@ALIENTEK
//2010/6/1
//定时器3中断服务程序
//2ms中断1次
void TIM3_IRQHandler(void)
{
 if(TIM3->SR&0X0001)//溢出中断
 {
  LED1=!LED1;
 }
 TIM3->SR&=~(1<<0);//清除中断标志位
}
//通用定时器中断初始化
//这里始终选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void Timerx_Init(u16 arr,u16 psc)
{
 RCC->APB1ENR|=1<<1;//TIM3时钟使能
 TIM3->ARR=arr; //设定计数器自动重装值//刚好1ms
 TIM3->SC=psc; //预分频器7200,得到10Khz的计数时钟
 //这两个东东要同时设置才可以使用中断
 TIM3->DIER|=1<<0; //允许更新中断
 TIM3->DIER|=1<<6; //允许触发中断
 TIM3->CR1|=0x01; //使能定时器3
 MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2
}


主函数的程序如下:

int main(void)
{
 Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72); //延时初始化
 uart_init(72,9600); //串口初始化
 LED_Init(); //初始化与LED连接的硬件接口
 Timerx_Init(5000,7199);//10Khz的计数频率,计数到5000为500ms
 while(1)
 {
  LED0=!LED0;
  delay_ms(250);
 }
}

改为定时器5后的定时器初始化程序:
#include "timer.h"
#include "led.h"
//Mini STM32开发板
//通用定时器驱动代码
//正点原子@ALIENTEK
//2010/6/1
//定时器5中断服务程序
//2ms中断1次
void TIM5_IRQHandler(void)
{
 if(TIM5->SR&0X0001)//溢出中断
 {
  LED1=!LED1;
 }
 TIM5->SR&=~(1<<0);//清除中断标志位
}
//通用定时器中断初始化
//这里始终选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器5!
void Timerx_Init(u16 arr,u16 psc)
{
 RCC->APB1ENR|=1<<3;//TIM5时钟使能
 TIM5->ARR=arr; //设定计数器自动重装值//刚好1ms
 TIM5->SC=psc; //预分频器7200,得到10Khz的计数时钟
 //这两个东东要同时设置才可以使用中断
 TIM5->DIER|=1<<0; //允许更新中断
 TIM5->DIER|=1<<6; //允许触发中断
 TIM5->CR1|=0x01; //使能定时器5
 MY_NVIC_Init(1,3,TIM5_IRQChannel,2);//抢占1,子优先级3,组2
}


 

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

使用道具 举报

10

主题

64

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3105
金钱
3105
注册时间
2012-3-12
在线时间
261 小时
发表于 2012-5-26 10:14:33 | 显示全部楼层
LZ多了解下这颗芯片的资料,它究竟有没有 TIM5,不解释!
回复 支持 反对

使用道具 举报

0

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-4-29
在线时间
0 小时
发表于 2012-5-26 10:58:36 | 显示全部楼层
一点看不懂
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-5-26 11:37:28 | 显示全部楼层
不解释.
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
 楼主| 发表于 2012-5-26 15:02:30 | 显示全部楼层
回复【2楼】破回复【2楼】破浪:

---------------------------------
我用的是stm32f103vet6,有4个16位定时器的啊
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
 楼主| 发表于 2012-5-26 15:03:00 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------

我用的是stm32f103vet6,有4个16位定时器的啊
 
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
 楼主| 发表于 2012-5-26 17:24:07 | 显示全部楼层
回复【2楼】破浪:

---------------------------------
我用的是stm32f103vet6,有4个16位定时器的啊
回复 支持 反对

使用道具 举报

10

主题

64

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3105
金钱
3105
注册时间
2012-3-12
在线时间
261 小时
发表于 2012-5-26 17:29:57 | 显示全部楼层
回复【6楼】王俊:
---------------------------------
哈哈,你的描述还以为你用的原子哥的板子呢!敬请谅解。

KEIL下的STM32F10x.s没有定时器5的中断函数名。
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
 楼主| 发表于 2012-5-26 17:46:04 | 显示全部楼层
回复【8楼】破浪:
---------------------------------
哈哈,没事没事
不过STM32F10x.s这个文件看不太懂
是不是按照对应的格式加上定时器5的中断函数名呢??
如果不是的话怎么样解决?
谢谢啦!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-5-27 00:16:36 | 显示全部楼层
回复【9楼】王俊:
---------------------------------
论坛搜索:.s
然后用HD.s这个文件.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
 楼主| 发表于 2012-5-27 12:09:20 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
看了那个帖子了,原来是这样子滴,问题解决了
非常感谢原子哥
回复 支持 反对

使用道具 举报

3

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2015-4-14
在线时间
62 小时
发表于 2015-4-14 15:10:17 | 显示全部楼层
原子哥,我用的是stm32f103rct6芯片,也是用例程,改成Time5,启动文件用HD.s了,软件仿真不能进入定时器5中断服务函数,求解啊!!! 
下载到板上,可以进入Time5中断服务函数,但感觉定时的时间不对啊????
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-14 23:09:45 | 显示全部楼层
回复【12楼】ldh45:
---------------------------------
TIM5不支持软件仿真
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2015-4-14
在线时间
62 小时
发表于 2015-4-16 14:35:45 | 显示全部楼层
哦,这样啊,谢谢原子哥回复【13楼】正点原子:
---------------------------------
 哦,这样啊,谢谢原子哥
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 18:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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