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作为中断口。