OpenEdv-开源电子网

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

请教SysTick_Config函数问题

[复制链接]

30

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2011-10-22
在线时间
0 小时
发表于 2012-3-10 19:28:44 | 显示全部楼层 |阅读模式

下面两个版本的SysTick_Config函数,第一版的定时没问题,第二版的定时就死掉了!请高手帮分析一下是哪里的故障?谢谢!
第一版:
void SysTick_Config(void)
{
 /* Disable SysTick Counter */
 SysTick_CounterCmd(SysTick_Counter_Disable);

 /* Disable the SysTick Interrupt */
 SysTick_ITConfig(DISABLE);

 /* Configure HCLK clock as SysTick clock source */
 SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

 /* SysTick interrupt each 1MS with HCLK equal to 36MHz */

 /*设置SysTick重装载值, 该参数取值必须在1和0x00FFFFFF之间,向下计数
 SysTick重装载值/(72M/8)=定时器中断时间                                                              */
 //SysTick_SetReload(9000000);// 1S
 SysTick_SetReload(9000);// 1mS
 //SysTick_SetReload(7200000);// 100mS
      //NVIC_SystemHandlerConfig(SystemHandler_MemoryManage, ENABLE);
      NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 1, 0);//初始化
 /* Enable the SysTick Interrupt */
 SysTick_ITConfig(ENABLE);
 SysTick_CounterCmd(SysTick_Counter_Enable);
}

第二版:
 static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{

      
 
  if (ticks > SYSTICK_MAXCOUNT)  return (1);                                            /* Reload value impossible */
 SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (0<<SYSTICK_ENABLE) | (0<<SYSTICK_TICKINT); /* Enable SysTick IRQ and SysTick Timer */

  SysTick->LOAD  =  (ticks & SYSTICK_MAXCOUNT) - 1;                                      /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);                            /* set Priority for Cortex-M0 System Interrupts */

  SysTick->VAL   =  (0x00);                                                              /* Load the SysTick Counter Value */
  SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (1<<SYSTICK_ENABLE) | (1<<SYSTICK_TICKINT); /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                                            /* Function successful */
}

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

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-3-10 19:49:04 | 显示全部楼层
建议软件仿真调试,对比看看哪个寄存器没配置好
https://github.com/roxma
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-10 19:51:49 | 显示全部楼层
参考这个帖子:http://www.openedv.com/posts/list/3154.htm?fromAll=0
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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