OpenEdv-开源电子网

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

待机唤醒程序解答

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-11-25
在线时间
0 小时
发表于 2014-11-25 15:31:16 | 显示全部楼层 |阅读模式
5金钱

#include"led.h"
#include"key.h"
#include"lcd.h"
#include"delay.h"
#include"wkup.h"
#include"sys.h"
#include"usart.h"

int main(void)
{
 delay_init();//延迟函数初始化
 NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级;2位响应优先级
 uart_init(9600);
 LED_Init();//LED初始化
 WKUP_Init();//待机唤醒初始化
 LCD_Init();//液晶显示初始化
 OINT_COLOR=RED;//液晶显示的字体的颜色设定
 LCD_ShowString(30,50,200,16,16,"JACKIE ZHU");
 LCD_ShowString(30,70,200,16,16,"WKUP PROCEDURE");
 LCD_ShowString(30,90,200,16,16,"INTEL");
 LCD_ShowString(30,110,200,16,16,"2014/11/24");
 while(1)
 {
  LED0=!LED0;//开启LED0
  delay_ms(250);
 }
}

以上程序是标准库函数版本的历程,我想问下,一旦程序进入while(1)死循环,怎么还能执行外部中断0服务程序去唤醒系统?本人初学请多多指教。
还有,我发现一旦我将上面程序中uart_init(9600);注释掉,然后编译,再将程序下载今板子,结果长按WKUP键,系统就无法再唤醒了,请问该实验与串口有关系吗?

最佳答案

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

1,中断和你while没什么直接关系,中断就是要打断正常运行代码的执行的 2,因为lcd_init里面用到了printf,你注释掉usart初始化,等于printf就残了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-25 15:31:17 | 显示全部楼层
1,中断和你while没什么直接关系,中断就是要打断正常运行代码的执行的
2,因为lcd_init里面用到了printf,你注释掉usart初始化,等于printf就残了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-11-25
在线时间
0 小时
 楼主| 发表于 2014-11-27 11:32:32 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
Thank you very much!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 14:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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