历史上的今天
返回首页

历史上的今天

今天是:2025年08月19日(星期二)

正在发生

2018年08月19日 | STOP状态下通过串口唤醒MCU

2018-08-19 来源:eefocus

/*
STOP状态下通过串口唤醒MCU
唤醒机制:在MCU进入STOP状态后,不能直接通过UART等外设唤醒,
在MCU进入STOP前将RX脚设为EXTI模式,并使能对应的中断。 
*/
/***************************************************************************************
** 函数名称: main
** 功能描述: 起始入口
**--------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************/
int main(void) 

System_Init(); 
PWR_DeInit(); 
UART_Init(); 
Global_Variables_Init();
while(1) 

PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); 


/***************************************************************************************
** 函数名称: EXTIX_Init
** 功能描述: 把RX改为EXTI,允许中断
** 参    数: None
** 返 回 值: None       
** 作   者: WEN(wenshijian4@163.com,QQ214490357)
** 日   期: 2015年09月17日
**--------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************/
void EXTIX_Init(void) 

EXTI_InitTypeDef EXTI_InitStructure; 
NVIC_InitTypeDef NVIC_InitStructure; 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource11); 
EXTI_InitStructure.EXTI_Line=EXTI_Line11;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; 
EXTI_InitStructure.EXTI_LineCmd = ENABLE; 
EXTI_Init(&EXTI_InitStructure); 
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel; 
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; 
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
NVIC_Init(&NVIC_InitStructure); 



/******************************************************************************* 
* Function Name : EXTI15_10_IRQHandler 
* Description : 位于stm32f10x_it.c
* Input : None 
* Output : None 
* Return : None 
*******************************************************************************/ 
void EXTI15_10_IRQHandler(void) 

EXTI_ClearITPendingBit(EXTI_Line11); 
NVIC_GenerateSystemReset(); 

/***************************************************************************************
** 函数名称: PWR_EnterSTOPMode
** 功能描述: 调整寄存器,进入STOP模式
** 参    数: 
** 返 回 值: None       
** 作   者: WEN(wenshijian4@163.com,QQ214490357)
** 日   期: 2015年09月17日
**--------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************/
void PWR_EnterSTOPMode(u32 PWR_Regulator, u8 PWR_STOPEntry) 

u32 tmpreg = 0; 
EXTIX_Init(); 


/* Select the regulator state in STOP mode ---------------------------------*/ 
tmpreg = PWR->CR; 
/* Clear PDDS and LPDS bits */ 
tmpreg &= CR_DS_Mask; 
/* Set LPDS bit according to PWR_Regulator value */ 
tmpreg |= PWR_Regulator; 
/* Store the new value */ 
PWR->CR = tmpreg; 
/* Set SLEEPDEEP bit of Cortex System Control Register */ 
*(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPDEEP_Set; 
/* Select STOP mode entry --------------------------------------------------*/ 
if(PWR_STOPEntry == PWR_STOPEntry_WFI) 

/* Request Wait For Interrupt */ 
__WFI(); 

else 

/* Request Wait For Event */ 
__WFE(); 


/***************************************************************************************
** 函数名称: UART_Init
** 功能描述: 串口初始化
** 参    数: None
** 返 回 值: None       
** 作   者: WEN(wenshijian4@163.com,QQ214490357)
** 日   期: 2015年09月17日
**--------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************/
void UART_Init(void) 

GPIO_InitTypeDef GPIO_InitStructure; 
USART_InitTypeDef USART_InitStructure; 
NVIC_InitTypeDef NVIC_InitStructure; 
/* Enable USART3 clock */ 
RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART3, ENABLE); 
// GPIO Settings for USART3 
// PB10: TXD_ROOM 
GPIO_StructInit(&GPIO_InitStructure); 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
GPIO_Init(GPIOB, &GPIO_InitStructure); 
// PB11: RXD_ROOM 
GPIO_StructInit(&GPIO_InitStructure); 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; 
GPIO_Init(GPIOB, &GPIO_InitStructure); 


USART_DeInit(USART3); 
USART_InitStructure.USART_BaudRate =9600; 
USART_InitStructure.USART_WordLength = USART_WordLength_9b; 
USART_InitStructure.USART_StopBits = USART_StopBits_2; 
USART_InitStructure.USART_Parity = USART_Parity_Even; 
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 
USART_Init(USART3, &USART_InitStructure); 
UartRxON(); 
// In initial state, waiting for indoor data... 
USART_ITConfig(USART3, USART_IT_TXE, DISABLE); 
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); 
UART_State=UART_RX; //0; // 0: received state 1: transmit state 
/* Enable the USART3 Interrupt */ 
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQChannel; 
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; 
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
NVIC_Init(&NVIC_InitStructure); 
/* Enable USART3 */ 
USART_Cmd(USART3, ENABLE); 

推荐阅读

史海拾趣

Advanced_Linear_Devices_Inc.公司的发展小趣事

在集成电路的封装领域,ALD同样展现出了强大的创新能力。公司不仅提供了塑封、PDIP、小型装(SOIC)等常见的封装形式,还开发出了密封陶瓷封装(CDIP)等高性能封装技术。这些封装技术不仅提高了集成电路的可靠性和稳定性,还降低了生产成本,为客户提供了更具竞争力的产品。

Freeport Resources Enterprises Corp公司的发展小趣事

近年来,Freeport Resources紧跟时代步伐,积极推进数字化转型和智能化升级。公司引入了先进的信息化管理系统和智能化生产设备,实现了从矿产勘探、开采到加工、销售的全链条数字化管理。通过数字化转型和智能化升级,Freeport Resources大幅提高了生产效率和产品质量,降低了运营成本。同时,公司还利用大数据和人工智能技术优化供应链管理和市场预测,为公司的战略决策提供有力支持。

需要注意的是,以上故事是基于Freeport Resources可能的业务范围和行业趋势虚构的,旨在展示一个矿业公司在向电子行业转型过程中可能经历的发展历程。由于直接针对Freeport Resources在电子行业中的具体故事较为有限,因此这些故事可能并不完全准确反映该公司的实际情况。

Datapro International Inc公司的发展小趣事

随着全球化的加速和市场竞争的加剧,Datapro International Inc公司开始加快国际化发展的步伐。他们积极拓展海外市场,并在全球范围内建立了完善的销售和服务网络。

在国际化发展的过程中,Datapro International Inc公司遇到了许多挑战和困难。然而,他们凭借坚定的信念和不懈的努力,成功克服了这些困难。他们深入了解当地市场和文化背景,并根据市场需求和客户需求不断调整产品和服务策略。这些努力使得Datapro International Inc公司在海外市场取得了显著的成果。

Eska公司的发展小趣事

Eska公司成立于荷兰北部,自创立之初就专注于造纸业务。公司引进了先进的造纸技术和设备,建立了两座灰板纸厂,配备了3台技术领先的纸板机和2台造纸机。凭借高效的生产能力和优质的产品质量,Eska迅速在造纸行业中崭露头角。Eska的灰板纸以“Eska(青蛙)”品牌销售,因其优良且稳定的质量而享誉全球。

Cicoil公司的发展小趣事

随着计算机技术的飞速发展,处理器成为了电子设备的核心部件。Cicoil公司看到了这一趋势,开始与处理器制造商展开合作。他们为处理器提供高质量的连接电缆,确保处理器能够稳定、高效地运行。这一合作使得Cicoil公司的电缆产品进一步深入到计算机领域,也为其带来了更多的商业机会。

AAC [American Accurate Components]公司的发展小趣事

AAC公司的创立可以追溯到上世纪90年代初,当时电子音响器件市场正迎来快速发展的机遇。AAC公司敏锐地捕捉到了这一市场趋势,迅速行动,与德国投资者共同成立了中德合资常州威利来电子音响器件有限公司。这一合资举措为AAC带来了先进的生产技术和管理经验,使其生产的讯响器和微型扬声器迅速打开了德国市场的大门。这一成功的合资经验为AAC后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

数字电视地面标准推迟出台

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 数字电视地面标准推迟出台 不含手机电视部分 2006-7-5     虽然已进入7月,原来“铁定”在6月底前出台的数字电视标准(即数字电视地面传输标准)却仍然迟迟不见踪影。   负 ...…

查看全部问答>

4位温度计,不能正确显示!

(有程序和Proteus仿真图)…

查看全部问答>

AVR(MEGA16)入门教程,详细的图解教程

AVR(MEGA16)入门教程,详细的图解教程…

查看全部问答>

如何用红外对射开关控制继电器

我想用一个红外对射开关控制欧姆龙MY2NJ继电器工作,对射开关的型号见图片 我用黄颜色的线接到继电器,继电器不能工作,继电器都是好的,我用12V电压直接控制继电器,是可以工作的,但用感应的不知道怎么接法。 红外对射开关工作电压是5V,继电器 ...…

查看全部问答>

在动车组两个车厢中的无线传输用什么样的方式更好

想在动车组两个车厢中实现数据的无线传输。 也考虑到一些实现方法,但是由于动车组有屏蔽大,速度快特点,造成无线数据包传输难度很大。 请问各位高手,用什么方式能达到这个目的呢?前提是不对车厢作出改造,比如车体外安装天线等 …

查看全部问答>

软键盘,模拟发送小数点的奇怪问题

现在软键盘基本上可以用了,但还有一个字符:小数点\'.\'不能用,发送字符小数点消息,可在我的应用程序里收到的消息却是:     第一个消息是:pMsg->hwnd为编辑框的句柄,但pMsg->message为15,也就是WM_PAINT,wParam和lParam为0, & ...…

查看全部问答>

又是一个石沉大海的问题!!??

如何在驱动代码中,获得U盘的插入?并获得其盘符(注:此U盘无文件系统) 谢谢,有钱的捧个钱场,无钱的捧个情场…

查看全部问答>

请高手详细介绍一下键盘IO口扩展IC:74164

我是个菜鸟,在学校学习的单片机都是很多过时的芯片,所以有很多不懂。请大家指教一下,这个芯片我还没有接触过。…

查看全部问答>

Fluke 27-II防水防尘数字多用表精确的使用方法

Fluke 27-II 工业多用表 新型 Fluke 27 II数字多用表树立了在困难情况下进行测量的新标准,它具有优异的功能和准确度,可以轻松解决大多数电气故障。 这款多用表均符合 IP 67(防水和防尘)规格,正在接受 MSHA 的认证审批,并且拥有更广的工作温 ...…

查看全部问答>