初级会员

- 积分
- 113
- 金钱
- 113
- 注册时间
- 2015-4-28
- 在线时间
- 2 小时
|
5金钱
你好,看到那个待机唤醒实验,有点不理解的地方,我先分析下我的思路,请教一下大神们看看对不对,
第一个问题:
int main(void)
{
delay_init();
NVIC_Configuration();
uart_init(9600);
LED_Init();
WKUP_Init();
LCD_Init();
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Mini STM32");
LCD_ShowString(30,70,200,16,16,"WKUP TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2014/3/8");
while(1)
{
LED0=!LED0;
delay_ms(250);
}
}
程序从main开始执行,一直执行到while(1)这个死循环里面,DS0本来是在主程序里不断翻转的,但是现象是一直是不亮的,看了下手册 个人 感觉是因为下面这个 函数 (不知道是不是因为这个原因 请赐教呀)
void Sys_Enter_Standby(void)
{
RCC_APB2PeriphResetCmd(0X01FC,DISABLE);
Sys_Standby();
} 中把所有开启的外设全部关闭,复位了所有的IO口, 有点疑惑复位不是复位成0嘛?,那就是低电平了,那不led不要全亮了呀,手册上是说复位了所有io口使得 io口为浮空输入,浮空输入查了一下就是高阻态,复位是复位成高阻态吗?
第二个问题:一直以来就中断问题不是太清楚,比如程序正在主程序的while死循环里执行,那我要去执行外部中断0,本实验中是不是就是只要检测到PA0引脚上的一个上升沿,然后CPU就会跳出 while循环去执行 void EXTI0_IRQHandler(void) 这个函数?如果是这样,有一个问题不太清楚,CPU正在执行主程序,它是如何知道PA0的上升沿的到来?在主程序中CPU 没有去轮询,那这个上升沿到来的中断请求就是外设自己提供给CPU 的,那外设能自己从程序开始运行就自己独立的开始工作?
|
最佳答案
查看完整内容[请看2#楼]
1,因为进入待机状态了,所以不会亮。至于复位复位成0,是你拍脑袋想出来的,自然就是不对了。是浮空输入才对。也就是你说的高阻状态。
2,架构决定了。
|