微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541 P02/P03作为中断唤醒MCU后,初始成UART

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top