在z_stack2007 中默认的是DMA模式的,且串口默认为0串口,我想通过预编译的方式来实现通过串口1的中断模式进行数据的交互。预想这样在休眠模式下通过外部中断来唤醒终端休眠。请问这样可以做到么?如果能做到请问怎么做呢?需要预编译什么呢?求各位大神帮帮忙
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,
TI的协议栈版本没有Z-Stack 2007之类的,只有Z-Stack 2.5.1a/Z-Stack Home 1.2.0/...
#ifndef HAL_UART_ISR
#if HAL_UART_DMA // Default preference for DMA over ISR.
#define HAL_UART_ISR 0
#elif (defined ZAPP_P2) || (defined ZTOOL_P2)
#define HAL_UART_ISR 2
#else
#define HAL_UART_ISR 1
#endif
#endif
CC2530在PM2模式支持Timer event和GPIO 中断唤醒,不支持串口唤醒,如果你想实现串口唤醒的话,在sleep前,把RX引脚,改成GPIO的配置就可以了。
当你把zgPollRate=0,当系统的timeout为0的时候,就会进入PM3
/* HAL_SLEEP_PM2 is entered only if the timeout is zero and
* the device is a stimulated device.
*/
halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;
/* DEEP sleep can only be entered when zgPollRate == 0.
* This is to eliminate any possibility of entering PM3 between
* two network timers.
*/
谢谢VV的回答,我用串口0能中断唤醒了 ,但是串口则不行,请帮我看看是不是配置出现了问题,
我在协议栈中修改了串口0 你能中断唤醒休眠,并且能从串口0 读出正确的数据,但是串口1就不行,我串口0的修改如下:在休眠前加入
P0SEL &= ~0X20; //外P0_5为通用接口模式
GPIO P0DIR &= ~0X20; //P0_5为输入
P0IEN |= 0X20; //开P0_5的IO中断使能
IEN1 |= 0X20; //开P0的中断
休眠后理解恢复到串口的原始状态,
P0SEL = 0x3C;
GPIO P0DIR =0X01;
P0IEN = 0X00;
IEN1 = 0X04;
hal_board_cfg.h头文件中,修改如下:
注掉原有的
#define HAL_UART_ISR 1//重新定义为ISR模式
这样就能从休眠中唤醒,
我串口1修改如下:在不休眠的时候,通过修改
hal_board_cfg.h头文件中,
#define HAL_UART_ISR 2//重新定义为ISR模式
这样就能正常读出数据,
加入休眠,我修改如下:
在休眠前加入
P1SEL &= ~0X80; //外P1_7为通用接口模式 GPIO P1DIR &= ~0X80; //P1_7为输入
P1IEN |= 0X80; //开P1_7的IO中断使能 IEN2 |= 0X80; //开P1的中断
休眠后醒来后立即回复原始状态:
P1SEL ^= 0x80;
GPIO P1DIR ^= 0X17;
P1IEN &= ~ 0X00;
IEN2 &= ~0X09;
但是这样不能从休眠中唤醒,更不要提读出数据了,请各位大神帮我看看是不是串口1的配置出现了问题,如果配置错误请问下周末配置,我对硬件不熟悉,谢谢
,谢谢VV大神的帮忙,我串口1能在不休眠的时候调通的 能正常收发数据的,就是加了休眠后,就不能正常使用了,请问下是不是我一下所加的配置不对呢
在休眠前加入
P1SEL &= ~0X80; //外P1_7为通用接口模式 GPIO P1DIR &= ~0X80; //P1_7为输入
P1IEN |= 0X80; //开P1_7的IO中断使能 IEN2 |= 0X80; //开P1的中断
休眠后醒来后立即回复原始状态:
P1SEL ^= 0x80;
GPIO P1DIR ^= 0X17;
P1IEN &= ~ 0X00;
IEN2 &= ~0X09;
谢谢vv,我这就没有唤醒,这样的配置能不能唤醒呢?
P1SEL &= ~0X80; //外P0_5为通用接口模式 GPIO P1DIR &= ~0X80; //P0_5为输入
P1IEN |= 0X80; //开P0_5的IO中断使能 IEN2 |= 0X80; //开P0的中
而且我在唤醒后配置:
P1SEL ^= 0x80; //外P0_5为通用接口模式 GPIO P1DIR ^= 0X17; //P0_5为输入
P1IEN &= ~ 0X00; //开P0_5的IO中断使能 IEN2 &= ~0X09;
配置成串口对么,