项目场景:
前面说过,公司引进华大的芯片作为公司新产品开发的平台。这里记录下项目开发过程中遇到的一个问题。
问题描述:
在调试完ws2812后,需要调试显示板同主板的通讯功能。两个板子之间是通过USART串口通讯的,关于这usart功能的实现,供应商提供的demo都有,在这之前也调好了一个usart口作为调试串口使用。参考demo改好相应的引脚配置后,却发现怎么也调不通,一开始以为是硬件问题,换了个板子后,问题依然存在,无奈只能慢慢翻看芯片的用户手册。最后在介绍gpio章节中,看到了这么一段话
我们方案采用PB3和PB4复用为usart,但是从手册中我们可以了解到,这两个口默认被配置为JTAG调试口,因此再将这两个引脚复位为USART前,需要对FSEL寄存器相应位写0无效JTAG/SWD功能。
解决方案:
知道原因后,就很好解决问题了
PORT_DebugPortSetting(1<<2, Disable);
PORT_DebugPortSetting(1<<4, Disable);
/* Initialize USART IO */
PORT_SetFunc(LCD_USART_RX_PORT, LCD_USART_RX_PIN, LCD_USART_RX_FUNC, Disable);
PORT_SetFunc(LCD_USART_TX_PORT, LCD_USART_TX_PIN, LCD_USART_TX_FUNC, Disable);
在引脚复位前写FSEL寄存器无效JTAG/SWD功能,上电重启,USART通信OK.