OpenEdv-开源电子网

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

关于开启SysTick之后进入不了Stop模式的问题

[复制链接]

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-5-4
在线时间
1 小时
发表于 2015-9-16 11:00:59 | 显示全部楼层 |阅读模式
5金钱
我之前调试好了Stop模式的闹钟唤醒和外部中断(PA0)按键唤醒,现在我只用闹钟唤醒,循环睡眠加唤醒成功后,加入了SysTick初始化,也就是打开了SysTick之后,就进入不了Stop模式。运行到那个函数,能进去,都能正常运行下去,但是就是进入不了睡眠模式,开始以为是标志没清除的原因,在Stop之前加入了清除所有中断
[mw_shl_code=c,true]EXTI_ClearITPendingBit(0x7ffff); RTC_ClearITPendingBit(0x07); PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); [/mw_shl_code]

还是不行。
但是一旦注释掉SysTick之后就不会有这个情况。
SysTick初始化的代码:
[mw_shl_code=c,true]void ARC_SysTick_Init() { if (SysTick_Config(SystemCoreClock / 1000)) { /* Capture error */ while (1); } } static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ SysTick->VAL = 0; /* Load the SysTick Counter Value */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0); /* Function successful */ } static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { if(IRQn < 0) { SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ else { NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ } [/mw_shl_code]

例程里面的。

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

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-5-4
在线时间
1 小时
 楼主| 发表于 2015-9-16 11:04:37 | 显示全部楼层
我在其他网站上也看到这么一个情况的人,
http://bbs.21ic.com/icview-881726-1-1.html
可以看看这个网址里面的14楼说的情况,和我一样。
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-5-4
在线时间
1 小时
 楼主| 发表于 2015-9-16 12:25:44 | 显示全部楼层
这边不是原子哥的例程,因为我在SysTick里面做了一些小事情,所以一直开着。用另一个TIM去代替做那些小事情,SysTick就只是用来延时,就是延时打开,好了关闭就不会有这个问题。
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5785
金钱
5785
注册时间
2013-11-22
在线时间
1213 小时
发表于 2015-9-17 00:05:33 | 显示全部楼层
如果有中断没关闭, 进入STOP模式后, 任意一个中断都会唤醒STM32
回复

使用道具 举报

3

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-7-10
在线时间
33 小时
发表于 2019-6-20 16:02:18 | 显示全部楼层
关掉SysTick就好了,我也被坑了一把
年轻就要拼一把!!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 10:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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