电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
stm32f407初始化TIM12中断时卡死
已解决
73482
个问题
已帮助
5993
位优秀工程师
stm32f407初始化TIM12中断时卡死
7b10f3474747ac6b
2019-11-01
浏览量:3316
程序卡死在了这一行
NVIC_InitStructure.NVIC_IRQChannel = TIM8_BRK_TIM12_IRQn;
注释掉这一行后可以运行
整个函数为
#define WHEEL_D 8.2
#define COUNT_PER_ROUND 320
#define DELTA_T 0.01
int last_count1 = 0;
int last_count2 = 0;
int last_count3 = 0;
int last_count4 = 0;
void Cal_Motor_Speed_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM12 ENABLE);
TIM_Timeba
seInitTypeDef TIM12_Timeba
seInitStruct;
TIM12_Timeba
seInitStruct.TIM_Period = 1000 - 1;
TIM12_Timeba
seInitStruct.TIM_Prescaler = 840 - 1;
TIM12_Timeba
seInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM12_Timeba
seInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_Timeba
seInit(TIM12 &TIM12_Timeba
seInitStruct);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM8_BRK_TIM12_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM12 TIM_IT_Up
date ENABLE);
TIM_ClearFlag(TIM12 TIM_FLAG_Update);
TIM_SetCounter(TIM12 0);
TIM_Cmd(TIM12 ENABLE);
}
/@@*
void TIM8_BRK_TIM12_IRQnHandler(void)
{
if(TIM_GetITStatus(TIM12 TIM_IT_Update)==SET)
{
motor1_vel = (count1 - last_count1) / DELTA_T;
motor1_vel = 3.14 * WHEEL_D * motor1_vel / 320;
last_count1 = count1;
}
TIM_ClearITPendingBit(TIM12 TIM_IT_Update);
}
*/
显示全部
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
莱克迷KW
应该不是定时器的配置的问题,应该 你的时钟的问题。看一下有没有打开相应的中断时钟,或是复用时钟吧。
发布于
2019-11-22
举报
评论 0
0
0
其他答案
数量:
2
chen0000009
先确认下这个寄存器的地址有没有弄错,有可能是你使用的那个芯片没这个外设,所以库里面指定的那个地址是不存在的
发布于
2019-11-23
举报
评论 0
0
0
Harriet
最好是检查一下你的你的中断分组,要根据对于的分组来把中断开启
发布于
2019-12-14
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
stm32f407初始化TIM12中断时卡死
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: