OpenEdv-开源电子网

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

stm32f103C8,初始化定时器3时死机

[复制链接]

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-7-25
在线时间
14 小时
发表于 2017-3-24 12:12:59 | 显示全部楼层 |阅读模式
1金钱
  1. <div>在使用stm32f103C8时,在main函数中调用TIM3_Int_Init();时会卡死,</div><div>debug时可以看到在</div><div>NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器</div><div>就不在继续了。</div><div>
  2. </div><div>TIM3_Int_Init();配置如下,谢谢解答。</div><div>
  3. </div><div>void TIM3_Int_Init(void)
  4. {
  5.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  6.         NVIC_InitTypeDef NVIC_InitStructure;

  7.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
  8.         //定时器TIM3初始化
  9.         // 19-------35999------10MS  定时
  10.         TIM_TimeBaseStructure.TIM_Period = 9; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值       
  11.         TIM_TimeBaseStructure.TIM_Prescaler =7199; //设置用来作为TIMx时钟频率除数的预分频值
  12.         TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
  13.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
  14.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位

  15.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
  16. //        TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//中断标志位清除
  17.         //中断优先级NVIC设置
  18.         NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
  19.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
  20.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
  21.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
  22.         NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器
  23.         TIM_Cmd(TIM3,ENABLE);       
  24. }</div>
复制代码

最佳答案

查看完整内容[请看2#楼]

好了,我的问题已经解决了。 具体原因如下: 在 stm32f10x.h 文件中的第 1272 行有 #define FLASH_BASE ((uint32_t)0x08000000) 我在使用 IAP 功能时,将这个宏定义更改了。 但是不使用IAP功能时,没把这个文件恢复为默认值。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-7-25
在线时间
14 小时
 楼主| 发表于 2017-3-24 12:13:00 | 显示全部楼层
好了,我的问题已经解决了。
具体原因如下:
在 stm32f10x.h 文件中的第 1272 行有
#define FLASH_BASE        ((uint32_t)0x08000000)
我在使用 IAP 功能时,将这个宏定义更改了。
但是不使用IAP功能时,没把这个文件恢复为默认值。

回复

使用道具 举报

15

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2016-11-11
在线时间
20 小时
发表于 2017-3-24 12:18:59 | 显示全部楼层
所谓的死机指的是。。。? 还有NVIC优先级分组分了么?
专才能精
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-7-25
在线时间
14 小时
 楼主| 发表于 2017-3-24 12:22:36 | 显示全部楼层
就是不能继续执行了,或者跑飞了。
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-7-25
在线时间
14 小时
 楼主| 发表于 2017-3-24 12:29:18 | 显示全部楼层
本帖最后由 yongqiang 于 2017-3-24 12:32 编辑

debug,就是到这里。分组也分了,
int main(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LED_Init();

uart3_init(250000);
// uart1_init(250000);
// DMX_Init();
TIM3_Int_Init();
while(1)
  {
  }
}

1

1

2

2

3

3
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-7-25
在线时间
14 小时
 楼主| 发表于 2017-3-24 12:36:16 | 显示全部楼层
chenjiabao 发表于 2017-3-24 12:18
所谓的死机指的是。。。? 还有NVIC优先级分组分了么?

你好,我上了调试的截图,你看下是否知道哪里问题,谢谢。
回复

使用道具 举报

15

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2016-11-11
在线时间
20 小时
发表于 2017-3-24 14:18:51 | 显示全部楼层
yongqiang 发表于 2017-3-24 13:56
好了,我的问题已经解决了。
具体原因如下:
在 stm32f10x.h 文件中的第 1272 行有

什么IAP功能我也不懂,不过你居然改这种h文件胆子很大
专才能精
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-23 01:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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