求助关于modern standbyy的问题

stm32在进入standby状态如何唤醒,求个简单参考代码-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
stm32在进入standby状态如何唤醒,求个简单参考代码
来源:互联网 发表时间: 15:22:10 责任编辑:王亮字体:
为了帮助网友解决“stm32在进入standby状态如何唤醒,求个简单参考代码”相关的问题,学网通过互联网对“stm32在进入standby状态如何唤醒,求个简单参考代码”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:stm32在进入standby状态如何唤醒,求个简单参考代码,具体解决方案如下:解决方案1:STM32的低功耗模式有3种:1)睡眠模式(CM3内核停止,外设仍然运行)2)停止模式(所有时钟都停止)3)待机(standby)模式(1.8V内核电源关闭)从待机模式唤醒后的代码执行等同于复位后的执行进入Standby模式后,只能有Wake-up脚和RTC唤醒,特别是唤醒后,程序将从最开始运行,也就是相当于软件复位。我这里有一个我以前写的参考代码void PWR_EnterSTANDBYMode(void){/* Clear Wake-up flag */PWR-&CR |= CR_CWUF_S/* Select STANDBY mode */PWR-&CR |= CR_PDDS_S/* Set SLEEPDEEP bit of Cortex System Control Register */*(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPDEEP_S/* Request Wait For Interrupt */__WFI();}/******************************************************************************** Function Name : PWR_WakeUpPinCmd* Description : Enables or disables the WakeUp Pin functionality.* Input : - NewState: new state of the WakeUp Pin functionality.* This parameter can be: ENABLE or DISABLE.* Output : None* Return : None*******************************************************************************/void PWR_WakeUpPinCmd(FunctionalState NewState){/* Check the parameters */assert_param(IS_FUNCTIONAL_STATE(NewState));*(vu32 *) CSR_EWUP_BB = (u32)NewS}/******************************************************************************** Function Name : LowPower_Init* Description : Initializes Low Power application.* Input : None* Output : None* Return : None*******************************************************************************/void LowPower_Init(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);/* Enable WakeUp pin */PWR_WakeUpPinCmd(ENABLE);/* Enable Clock Security System(CSS) */RCC_ClockSecuritySystemCmd(ENABLE);}PS,进入satandby之前要关闭看门狗,否则看门狗的复位,会导致MCU提前醒来
1个回答1个回答2个回答2个回答1个回答2个回答1个回答2个回答2个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号后使用快捷导航没有帐号?
求助关于交换机堆叠以及链路聚合的问题
&小试牛刀&
最新回复: 11:11:44
有两个相同型号的S3700-52P-EI交换机,通过一条堆叠线缆进行了堆叠,分别选择了0/0/48和1/0/48做了链路聚合,配置为静态手工负载均衡,两个端口通过两条网线连接到了服务器的两个网卡,服务器两个网卡做了绑定. &问题来了,有400的工程师告诉我说这样做链路聚合是无效的,果然是这样的么? &但我在配置里面看到了链路聚合端口是UP的状态,求解?
堆叠后应该就相当于一台交换机吧!你看下堆叠成功后的配置和接口,是不是成一台交换机了,如果成一台交换机这样是可以的!
不知S3700的堆叠是不是这种!
楼主可以用display eth-trunk这个命令看看成员端口的状态是否为selected,只有selected表明有效。
这个采用什么模式的LACP,要看网卡,只要交换机和网卡保持一致就OK了
&小试牛刀&
&STACK&disp stack
Stack topology type: Link
Stack system MAC: 101b-54bb-563c
MAC switch delay time: 10 min
Stack reserved vlanid : 4093
Slot# & & role & & & &Mac address & & &Priority & Device type
------ & &---- & & & &-------------- & ------ & & -------
& & 0 & & Standby & & 101b-54bb-55eb & 100 & & & &S3700-52P-EI-AC
& & 1 & & Master & & &101b-54bb-563c & 100 & & & &S3700-52P-EI-AC
&STACK&dis eth
&STACK&dis eth-trunk&
Eth-Trunk1's state information is:
WorkingMode: NORMAL & & & & Hash arithmetic: According to SA-XOR-DA & & & & &&
Least Active-linknumber: 1 &Max Bandwidth-affected-linknumber: 8 & & & & & & &
Operate status: down & & & &Number Of Up Port In Trunk: 0 & & & & & & & & & &&
--------------------------------------------------------------------------------
PortName & & & & & & & & & & &Status & & &Weight&
Ethernet1/0/1 & & & & & & & & Down & & & &1 & & &
Ethernet0/0/1 & & & & & & & & Down & & & &1 & & &
&横扫千军&
你这个链路聚合是双down的 可能配置有误
&小试牛刀&
当前没有连接服务器,所以端口是down的状态,实际上我是想确认一下S3700这种交换机堆叠以后是否支持跨板的链路聚合
&横扫千军&
实现堆叠的目的就是做这个的 当然支持了 不然怎么做冗余
联系我们:
版权所有 (C) 华为技术有限公司 。 保留一切权利。粤A2-号已被0人收藏
&电脑小白求助:关于桥接与路由拨号的问题
来自:上海
发帖:4+41
家里新升级了20M的光纤。送的是华为8240R的光猫(再配自备的TP-LINK)。之前经常看到帖子说破解光猫后利用自己的路由器拨号上网,作为电脑小白的我想问问各位达人,这2者的区别在哪里?对使用者有什么好处?
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
...楼主...
来自:上海
发帖:4+42
[来自我的android app]
-=此贴发送自[wap]=-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海
发帖:4+43
么人啊?技术达人呢?
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
首先,请你以一种,团成一个团的姿势,然后,慢慢地比较圆润的方式,离开这座让你讨厌的城市,或者讨厌的人的周围首先,请你以一种,团成一个团的姿势,然后,慢慢地比较圆润的方式,离开这座让你讨厌的城市,或者讨厌的人的周围
电脑小白求助:关于桥接与路由拨号的问题
扫描关注官方微信
扫描下载客户端
你可以发私信给一个或多个听众。默认不能发给非听众,除非对方设置了允许。
奖励分值:您今日还有 3 点分值可以奖励 [ 20 点奖分可自动换取 1 点PP]
请输入4位有相同表情的数字
&违反国家法律&&&&&&&&&含有色情内容
&对他人进行恶意攻击
&散布广告以及其它商业化的宣传
&干扰或混乱kds宽带山网络服务
&发布任何包含种族、 性别、宗教歧视性和猥亵性的信息内容
&恶意刷屏&&&&&&&&&&&&&&&内容重复&&&&&&&&&&&&&&&攻击管理员
&本人要求删除&&&&&&&&当事人要求删除
&与主题无关&&&&&&&&&&&水贴软文&&&&&&&&&&&涉及敏感政治内容
&被要求删除,你懂的
扣除hp值:
宽带山警务室
&恶意刷屏&&&&&&&&&水贴软文
&违反国家法律
&含有色情内容
&对他人进行恶意攻击
&散布广告以及其它商业化的宣传
&干扰或混乱kds宽带山网络服务
&发布任何包含种族、 性别、宗教歧视性和猥亵性的信息内容
&网页不能打开
&图片不能显示
已报名参加的人员:当前位置: &
求翻译:Standby current is when in
power off and Acc on state of current是什么意思?
Standby current is when in
power off and Acc on state of current
问题补充:
待机电流时,在断电和当前状态ACC
待命目前是在关闭电源时,行政协调会关于目前的国家
备用潮流,当在力量和Acc在潮流状态
待机电流是在关闭电源并协调会对当前状态时
我来回答:
参考资料:
* 验证码:
登录后回答可以获得积分奖励,并可以查看和管理所有的回答。 |
我要翻译和提问
请输入您需要翻译的文本!查看: 439|回复: 4
求助关于AVR单片机利用NRF24L01实现无线通信的问题
主题帖子精华
新手上路, 积分 27, 距离下一级还需 23 积分
在线时间9 小时
想用两块AVR通过NRF24L01实现无线通信的功能,就是最简单的主机发一个数,从机接收到之后将其输出在一个IO口上,我在网上找的以前的网友调试好的例程,怕修改错我几乎是完全移植过来的,但是得到的结果和例程里描述的结果还是不一样,我甚至怀疑两个无线模块都没有工作,以下是程序,请大家帮我看看主机程序& && && && && && && && &
#include &NRF24L01.H&
void main(void)
& &uchar sta,i;
& &uchar TX_BUF[5]={0x20,0x20,0x20,0x20,0x20};
& &uchar RX_BUF[5];
& &DDRC=0XFF;
// delay_nms(22);
& &while(1)
& && &init_NRF24L01();
& && &nRF24L01_TxPacket(TX_BUF);
& && &while(CheckACK());
& && &init_NRF24L01();
& && &SetRX_Mode();
& && &&&while(!(nRF24L01_RxPacket(RX_BUF)));
& & & & & & & && &PORTD=0
& && && & for(i=0;i&5;i++)
& && && &&&{
& && && && &PORTC=RX_BUF[2]; //现象是PC 口的值为0xaa=
& && && &&&}
//delay_nms(50);
#include &NRF24L01.H&
void main(void)
& &uchar sta,i;
& &uchar TX_BUF[5]={0x20,0x20,0xaa,0x20,0x20};
& &uchar RX_BUF[5];
& &DDRC=0XFF;
& &while(1)
& && &init_NRF24L01();
& && &SetRX_Mode();
& && &while(!(nRF24L01_RxPacket(RX_BUF)));
& && &for(i=0;i&5;i++)
& && && &PORTC=RX_BUF; //现象是PC 口的值为0x20,即PC5 为1,其余全为零。
& && &init_NRF24L01();
& && &nRF24L01_TxPacket(TX_BUF);
& && &while(CheckACK());
& && &// delay_nms(50);
#ifndef _NRF24L01_H
#define _NRF24L01_H
#include &iom16v.h&
#include &macros.h&
#define uchar unsigned char
#define uint unsigned int
#define DDR_SPI DDRB
#define DD_MOSI PB5
#define DD_MISO PB6
#define DD_SCK&&PB7
#define DD_SS& &PB4
#define CE& && &PB3
#define IRQ& &&&PB2
#define Hign_24L01_MISO& &PORTB|=(1 && PB6)
#define Low_24L01_MISO& & PORTB &= ~(1 && PB6)
#define Read_24L01_MISO& &PINB & (1 && PB6)
#define Hign_24L01_MOSI& &PORTB |= (1 && PB5)
#define Low_24L01_MOSI& & PORTB &= ~(1 && PB5)
#define Read_24L01_MOSI& &PINB & (1 && PB5)
#define Hign_24L01_SCK& & PORTB |= (1 && PB7)
#define Low_24L01_SCK& &&&PORTB &= ~(1 && PB7)
#define Read_24L01_SCK& & PINB & (1 && PB7)
#define Low_24L01_CSN& &&&PORTB &= ~(1 && PB4)
#define Hign_24L01_CSN& & PORTB |= (1 && PB4)
#define Hign_24L01_CE& &&&PORTB |= (1 && PB3)
#define Low_24L01_CE& && &PORTB &= ~(1 && PB3)
#define Read_24L01_CE& &&&PINB & (1 && PB3)
//*********************************************NRF24L01***********************
#define TX_ADR_WIDTH& &5& &// 发送地址长度,最大长度为5 5*8=40 bit
#define RX_ADR_WIDTH& &5& &// 接收地址长度
#define TX_PLOAD_WIDTH 5& &// 发送字节长度,
#define RX_PLOAD_WIDTH 5& &// 接收字节长度
uchar TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址
uchar RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //接收地址
//***************************************NRF24L01 寄存器指令******************
#define READ_REG& &&&0x00& &&&// 读寄存器指令
#define WRITE_REG& & 0x20& &&&// 写寄存器指令
#define RD_RX_PLOAD&&0x61& &&&// 读取接收数据指令
#define WR_TX_PLOAD&&0xA0& &&&// 写待发数据指令
#define FLUSH_TX& &&&0xE1& &&&// 冲洗发送FIFO 指令
#define FLUSH_RX& &&&0xE2& &&&// 冲洗接收FIFO 指令
#define REUSE_TX_PL&&0xE3& &&&// 定义重复装载数据指令
#define NOP1& && && &0xFF& &&&// 保留
//*************************************SPI(nRF24L01) 寄存器地址
#define CONFIG& && & 0x00& & // 配置收发状态,CRC 校验模式以及收发状态响应方式
#define EN_AA& && &&&0x01& & // 自动应答功能设置
#define EN_RXADDR& & 0x02& & // 可用信道设置
#define SETUP_AW& &&&0x03& & // 收发地址宽度设置
#define SETUP_RETR& &0x04& & // 自动重发功能设置
#define RF_CH& && &&&0x05& & // 工作频率设置
#define RF_SETUP& &&&0x06& & // 发射速率、功耗功能设置
#define STATUS& && & 0x07& & // 状态寄存器
#define OBSERVE_TX& &0x08& & // 发送监测功能
#define CD& && && &&&0x09& & // 地址检测
#define RX_ADDR_P0& &0x0A& & // 频道0 接收数据地址
#define RX_ADDR_P1& &0x0B& & // 频道1 接收数据地址
#define RX_ADDR_P2& &0x0C& & // 频道2 接收数据地址
#define RX_ADDR_P3& &0x0D& & // 频道3 接收数据地址
#define RX_ADDR_P4& &0x0E& & // 频道4 接收数据地址
#define RX_ADDR_P5& &0x0F& & // 频道5 接收数据地址
#define TX_ADDR& && &0x10& & // 发送地址寄存器
#define RX_PW_P0& &&&0x11& & // 接收频道0 接收数据长度
#define RX_PW_P1& &&&0x12& & // 接收频道0 接收数据长度
#define RX_PW_P2& &&&0x13& & // 接收频道0 接收数据长度
#define RX_PW_P3& &&&0x14& & // 接收频道0 接收数据长度
#define RX_PW_P4& &&&0x15& & // 接收频道0 接收数据长度
#define RX_PW_P5& &&&0x16& & // 接收频道0 接收数据长度
#define FIFO_STATUS&&0x17& & // FIFO 栈入栈出状态寄存器设置
//*************************************************************
void SPI_init( )
& &Hign_24L01_CSN;
& &DDR_SPI = (1&&DD_MOSI)|(1&&DD_SCK)|(1&&DD_SS)|(1 && CE);//设置MOSI,SCK,SS.CE为OUTPUT,其它为INPUT
& &DDR_SPI&=~((1&&DD_MISO)|(1&&IRQ));
& &SPCR=(1&&SPE)|(1&&MSTR)|(1&&SPR0);//使能SPI 接口,主机模式,MSB 低位在前,模式0,16分频,SPI 时钟1MHZ
& &SPSR=0;
void delay_nus(uint n)
& &while(n--);
void delay_nms(uint n)
& &while(n--);
& &for(j=0;j&1140;j++);
//**************************************************
//******* uchar SPI_RW(uchar date) 读写SPI
//**************************************************
uchar SPI_RW(uchar date)
& &while(!(SPSR&(1&&SPIF)));
& &return SPDR;
//**************************************************
//*******uchar SPI_Read(uchar reg) 读24L01 寄存器
//**************************************************
uchar SPI_Read(uchar reg)
& &uchar reg_
& &Low_24L01_CSN;
& &SPI_RW(reg);
& &reg_val = SPI_RW(0);
& &Hign_24L01_CSN;
& &return(reg_val);
//**************************************************
//******* uchar SPI_RW_Reg(uchar reg, uchar value)
// 写24L01 寄存器
//**************************************************
uchar SPI_RW_Reg(uchar reg, uchar value)
& &Low_24L01_CSN;
& &status = SPI_RW(reg);
& &SPI_RW(value);
& &Hign_24L01_CSN;
& &return(status);
//**************************************************
//******* uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bites)
// 读24L01 寄存器BUFF
//**************************************************
uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bites)
& &uint status1,uchar_
& &Low_24L01_CSN;
& &status1 = SPI_RW(reg);
& &for(uchar_ctr=0;uchar_ctr&uchar_ctr++)
& &pBuf[uchar_ctr] = SPI_RW(0);
& &Hign_24L01_CSN;
& &return(status1);
//**************************************************
//******* uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bites)
// 写24L01 寄存器BUFF
//**************************************************
uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bites)
& &uchar status1,uchar_
& &Low_24L01_CSN; //SPI 使能
& &status1 = SPI_RW(reg);
& &for(uchar_ctr=0; uchar_ctr& uchar_ctr++) //
& & SPI_RW(*pBuf++);
& &Hign_24L01_CSN; //关闭SPI
& &return(status1); //
//**************************************************
//******* void SetRX_Mode(void)
// 接收模式设置
//**************************************************
void SetRX_Mode(void)
& &Low_24L01_CE;
& &SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收地址
& &SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); //0 通道自动应答
& &SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); //数据通道0
& &SPI_RW_Reg(WRITE_REG + RF_CH,0); //射频通道
& &SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH);//写通道0 接受数据长度
& &SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //0db 1M
& &SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); //接收模式
& &Hign_24L01_CE; //开始接收
& &delay_nus(200);//注意不能太小
//**************************************************
//******* uchar nRF24L01_RxPacket(uchar* rx_buf)
// 接收数据包
//**************************************************
uchar nRF24L01_RxPacket(uchar* rx_buf)
& &uchar sta,flag=0;
& &sta=SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况
& &if(sta&0x40) // 判断是否接收到数据RX_DR==1?
& &&&Low_24L01_CE; // StandBy I 模式
& &&&SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payloadfrom RX_FIFO buffer
& &&&flag =1; //读取数据完成标志
& &SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1 来清楚中断标志
& &return (flag);
//******* void nRF24L01_TxPacket(uchar * tx_buf)
// 发送数据包
//**************************************************
void nRF24L01_TxPacket( uchar * tx_buf)
& &uchar sta=0;
& &uchar flag=0;
& &Low_24L01_CE; //StandBy I 模式
& &SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);
& &SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址
& &SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据
& &SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); //
& &SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); //
& &SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1f); //500+86us
& &SPI_RW_Reg(WRITE_REG + RF_CH, 0); //
& &SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //
& &SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ 收发完成中断响应,16 位CRC,主发送
& &delay_nms(2);
& &Hign_24L01_CE; //置高CE,激发数据发送
& &delay_nus(10);
& &Low_24L01_CE;
uchar CheckACK(void)
& &uchar sta1;
& &sta1=SPI_Read(STATUS); // 返回状态寄存器
& &if((sta1&0x20)||(sta1&0x10)) //发送完毕中断
& &&&SPI_RW_Reg((READ_REG+STATUS),0xff); // 清除TX_DS 或MAX_RT 中断标志
& &&&Low_24L01_CSN;
& &&&SPI_RW(FLUSH_TX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!
& &&&Hign_24L01_CSN;
& &&&return(0);
& &&&return(1);
void init_NRF24L01(void)
& &SPI_init();
& &Low_24L01_CE; // 空闲模式
& &Hign_24L01_CSN; // SPI 关闭
& &Low_24L01_SCK; // 关闭时钟
结果一直不能出来,不知道到底哪儿出错了,程序是网友调试好的啊,我都没改,端口接线也是按照IO口模拟SPI通信引脚定义接的,我检查了好几遍,不会出错,到底是哪儿出问题了,请各位大哥帮我看看。。。。。会不会是要接上拉电阻什么的,但是我用的是PB口啊,应该不用接上拉电阻吧
我来说下我调试的时候遇到,跟你一样也是在网上找到的例子,折腾好几天不行,最后试出来了,就是定义发送地址和接收地址的时候不是整个数组一次性初始化完毕,而是在main函数开始的时候一个一个的赋值,然后就是这样OK了!
附件是我调试通过的
里面好几个函数如果你不需要可以注释掉
主题帖子精华
新手上路, 积分 28, 距离下一级还需 22 积分
在线时间5 小时
本帖最后由 hongyan 于
21:16 编辑
我来说下我调试的时候遇到,跟你一样也是在网上找到的例子,折腾好几天不行,最后试出来了,就是定义发送地址和接收地址的时候不是整个数组一次性初始化完毕,而是在main函数开始的时候一个一个的赋值,然后就是这样OK了!& &附件是我调试通过的& &&&里面好几个函数如果你不需要可以注释掉
21:14 上传
点击文件名下载附件
522.31 KB, 下载次数: 5
主题帖子精华
金钱101424
在线时间587 小时
主题帖子精华
新手上路, 积分 27, 距离下一级还需 23 积分
在线时间9 小时
多谢原子大哥
主题帖子精华
初级会员, 积分 152, 距离下一级还需 48 积分
在线时间0 小时
delay_nus(10);&&这个加大点
RFinchina 团队欢迎无线方面的技术交流 QQ
Powered by}

我要回帖

更多关于 幼儿求助问题表现 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信