CC2541 P02/P03作为中断唤醒MCU后,初始成UART
时间:10-02
整理:3721RD
点击:
各位:
如题,我现在将P02/P03默认作为普通IO口,配置如下:
P0SEL &= ~(BV(2)|BV(3));
P0DIR &= ~BV(2);
P0IEN |= BV(2);
P0IFG &= ~BV(2);
P0DIR |= BV(3);
P0 &= ~BV(3);
当IO口唤醒MCU后,将P02/P03初始成UART,初始代码如下:
HalUARTInit();
halUARTCfg_t uartConfig;
// configure UART
uartConfig.configured = TRUE;
uartConfig.baudRate = bps;
uartConfig.flowControl = FALSE;
uartConfig.flowControlThreshold = 0;//48;
uartConfig.rx.maxBufSize = 128;
uartConfig.tx.maxBufSize = 128;
uartConfig.idleTimeout = 6;
uartConfig.intEnable = TRUE;
uartConfig.callBackFunc = wechatUartCallBack;
// start UART
// Note: Assumes no issue opening UART port.
(void)HalUARTOpen( NPI_UART_PORT, &uartConfig );
但是现在UART发不出去数据,也接收不到数据,请问是怎么回事呢
请参考TI官方例程:http://processors.wiki.ti.com/index.php/SimpleBLEPeripheral_SerialInterface
非常感谢。
但是我看了代码有几个问题:
1、这个没有加入低功耗。
2、没有串口的关闭呢。
我当前是想平时P02、P03作为普通IO口,整个系统处于低功耗模式。当P02收到中断后,系统退出睡眠,然后将P02/P03初始化成UART,然后收发数据。完成收发之后,又将P02、P03作为普通IO口,并且系统睡眠,等待再次唤醒。
理论能够实现,唤醒后需要重新初始外部晶振和串口功能。
可能的话,单独使用一个外部中断唤醒引脚。
谢谢回复。
但是就是必须只能两根线,所以需要RX作为中断口。
