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.

CC2538 UART0的初始化和发送代码

Other Parts Discussed in Thread: CC2538

各位大神们好。

经过了一番挣扎,我终于让CC2538的Uart0打印出东西了。

现在将代码上传,欢迎大家下载测试。

请将测试结果及时跟贴回复,以便我修改代码

请一定要仔细阅读代码中的注释!

  • 提供的代码不错;

    1、参考HalUARTInitIsr函数,详细阅读注释应该会简单些。

    2、TI的万能引脚功能映射,看似完美方案,假如硬件设计错了,可以重新映射接口,照样能用,我就这么干过,^_^。

    3、万能引脚映射,但也造成很多人困惑,以为像别的MCU或者MPU,某个引脚固定几个功能,然后分时复用,使用前设定好模式即可,CC2538还要额外设置引脚和功能映射。

    4、注释一下:

      //映射UART1的TXD引脚,你可以改为UART0,参数二改为IOC_MUX_OUT_SEL_UART0_TXD
      IOCPinConfigPeriphOutput(GPIO_A_BASE, GPIO_PIN_1, IOC_MUX_OUT_SEL_UART1_TXD);
      //映射UART1的RXD引脚,可以改为UART0,参数二为IOC_UARTRXD_UART0
      IOCPinConfigPeriphInput(GPIO_A_BASE, GPIO_PIN_0, IOC_UARTRXD_UART1);
      //接下来这两句是映射具体的端口的,这里是PA0和PA1,你可以改为PB1和PB2也是可以的,相信知道base+offset这种寻址方式的人都了解
      GPIOPinTypeUARTInput(GPIO_A_BASE, GPIO_PIN_0);
      GPIOPinTypeUARTOutput(GPIO_A_BASE, GPIO_PIN_1);  
  • 当然还有几个地方要注意:

    1、搜搜HAL_UART_PORT宏

    2、搜搜HAL_UART_SYS_CTRL宏

    不好意思,没仔细看你代码,不过看到里面有static的东西,在这种捉襟见肘的MCU上,最好还是能省则省,不要用全局的,恨死XDATA报错了

  • 感谢您的回复。

    关于全局变量,代码中只是用了一个全局变量。

    之所以用static修饰,是为了限定该变量只在该文件内使用。

    ZStack中的uart api有个陷阱

    uint8 HalUARTOpenIsr(uint8 port, halUARTCfg_t *config)这个函数用来打开uart,port参数指定是哪个uart

    但是这个函数最后调用了UARTEnable(HAL_UART_PORT);

    HAL_UART_PORT是一个宏,打开的是UART1。

    我发现这个uart api就是给MT定制的,不是给开发者调用的。

    对了,请教您一个问题,我的uart打印用的UARTCharPut这个函数

    我看uart api里面用的UARTCharPutNonBlocking

    我用UARTCharPutNonBlocking发现只打印17个字符就结束了,换成UARTCharPut这个函数就正常了

    使用UARTCharPut这个函数会有什么问题吗?

    我看这两个函数都没有提供原始代码,所以没办法仔细分析。

  • 1、HalUARTOpenIsr看似指定了port,但是实际上这个参数并没有使用,TI应该是根据具体的UARTEnable来决定使用哪路串口,当然两路串口应该是可以同时工作的,不过一路是DMA,一路是ISR

    2、UARTCharPutNonBlockingUARTCharPut的区别,应该是一个非阻塞,一个阻塞,可能针对不同的应用场景的,非阻塞用于单次小数据量,直接放到缓缓区不需要等发送完成就返回,阻塞,就是等数据全部发完了再返回。

    3、如果都提供了代码,这帮FAE就闲着没事干了都得辞掉,这是非技术因素

  • 我已经实现了两路UART串口同时使用,比你的方便很多,链接如下,希望能够帮助更多的人:

    CC2538 ZigBee 芯片 两路UART串口同时使用

    吐槽一句,TI论坛跟帖不让发超链接,直接把超链接符号弄成灰色,太扯淡了,还得让我用html文本编辑才能添加超链接!!!!