找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1326|回复: 4
打印 上一主题 下一主题
收起左侧

STM32 定时器问题

[复制链接]
跳转到指定楼层
楼主
ID:197565 发表于 2017-7-23 18:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了个指定ms的定时器接口
但是那个ms 参数没有作用 我不管写多少 在调试时进入中断的时间间隔一直是 0.0000119s
而且程序死在了中断
我都想了一天了
都不知道问题在那
希望得到帮助
那个函数如下
void ConfigTimer2ms(u16 ms)
{
TIM_Cmd(TIM2,DISABLE);//关闭TIM2定时器
TIM_TimeBaseInitTypeDef timerInit;//定义TIM2的配置结构体
NVIC_InitTypeDef NvicInt;//定义TIM2中断配置结构体
//定时器配置
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
timerInit.TIM_Period= 36000 -1;//设置TIM2自动填充寄存器
timerInit.TIM_Prescaler = ()ms*2) - 1; //72M晶振 设置预分频
timerInit.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
timerInit.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
TIM_TimeBaseInit(TIM2,&timerInit);//进行定时器配置 传入TIM2的配置结构体指针
//定时器中断配置
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断代处理位

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2
NvicInt.NVIC_IRQChannel = TIM2_IRQn;//选择TIM2
NvicInt.NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级0
NvicInt.NVIC_IRQChannelSubPriority = 2;//从优先级2
NvicInt.NVIC_IRQChannelCmd = ENABLE;//TIM2通道使能
NVIC_Init(&NvicInt);//进行定时器中断配置 传入TIM2中断的配置结构体指针

TIM_Cmd(TIM2,ENABLE);//开启中断
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); //使能TIM2中断
}
中断函数
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
/**
*中断服务
**/
KeyInterrupt();//按键处理
}
}

经过不断调试
发现TIM_TimeBaseInit(TIM2,&timerInit);
这个无效
是怎么回事啊
我用的是keil5
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:197565 发表于 2017-7-23 21:21 | 只看该作者
我已经知道了 是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
我在那个程序中把它写在了TIM_TimeBaseInit(TIM2,&timerInit);
之后

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:197565 发表于 2017-7-23 21:22 | 只看该作者
我已经知道了 是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
我在那个程序中把它写在了TIM_TimeBaseInit(TIM2,&timerInit);
之后
提醒大家,使用有关外设 一定要先打开 他的时钟

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:197565 发表于 2017-7-23 21:23 | 只看该作者
我已经知道了 是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟 我在那个程序中把它写在了TIM_TimeBaseInit(TIM2,&timerInit); 之后 提醒大家,使用有关外设 一定要先打开 他的时钟
回复

使用道具 举报

5#
ID:61002 发表于 2017-7-23 22:03 | 只看该作者
你试着把中断时间加长
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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