3449|2

1297

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

【把玩LPC810 mini】初试低功耗模式与systick [复制链接]

紧接上回的systick的疑问,在各位坛友的指点下,又去阅读了UM,设计了一个最简单实验,发现deep sleep及更深的低功耗模式,systick就会停止,而其中的关键问题是sysclock是否关闭。最基本的思路:systick_handler中对mycount进行++操作,主循环中判断mycount是否大于4,满足条件后启用DP模式,这样_WFI()指令会自动根据LPC_PMU->PCON的值确定低功耗模式,我现在设定为1,就是deep sleep。




运行结果,小灯闪烁亮暗交替5次,停止,符合预期。但是有个地方很奇怪,我在主循环中设定翻转IO时,同时串口打印“hi\n",而进deep sleep前打印"deep sleep\n"。结果最后一个hi后面的换行没有,deep sleep只能显示到“deep slee”。把deep sleep改为deep吧,只能显示到“dee”。



看流程不应该啊,编译关闭优化选项。核心代码如下。(顺便问下,代码模式下为啥不能自动缩进呢?)注:编辑的时候没有,提交了就有了,嘿嘿

  1. void SysTick_Handler(void)
  2. {
  3. mycount++;
  4. }

  5. int main(void) {
  6. //前面还有其他模块初始化
  7.         LPC_PMU->PCON = 0x01;
  8.         //Chip_Clock_SetMainClockSource(SYSCTL_MAINCLKSRC_IRC);
  9.     // Enter an infinite loop, just incrementing a counter
  10.     while(1) {
  11.     LPC_GPIO_PORT->NOT[0] = (1 << 2);
  12.     Chip_UART_SendBlocking(LPC_USART0,"hi\n",3);
  13.     if (mycount>4)        {
  14.         //  Chip_UART_SendBlocking(LPC_USART0,"deep sleep\n",11);
  15.         SCB->SCR |= (1UL << SCB_SCR_SLEEPDEEP_Pos); //| (SCB->SCR & ~SCB_SCR_RESERVED);
  16.        Chip_UART_SendBlocking(LPC_USART0,"deep\n",5);
  17.     }

  18.     __WFI();
  19.     }
复制代码



此帖出自NXP MCU论坛

最新回复

串口有FIFO,进入deep sleep模式后,串口FIFO的数据都停止发送了  详情 回复 发表于 2015-8-5 17:49
点赞 关注
 

回复
举报

14

帖子

1

TA的资源

一粒金砂(初级)

沙发
 
串口有FIFO,进入deep sleep模式后,串口FIFO的数据都停止发送了
此帖出自NXP MCU论坛
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

板凳
 
但是串口发送用的是blocking模式,照理说发完了才会执行WFI啊
此帖出自NXP MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表