STM32F103部分系列的单片机总共有5个串口,分别是USART1,USART2,USART3和UART4,UART5. 一般情况下,USART1,USART2,USART3只要配置正确都是可以正常发送数据和接收数据的(中断或查询接收都可以)。但在使用UART4,UART5的时候,可能会遇到能正常发送数据,但不能进入中断的问题,那也就意味着不能通过中断来接收数据。如果在配置 的时候,把UART4,UART5的中断关闭,然后通过查询的方式去接收数据,通过调用
if(USART_GetFlagStatus(UART4, USART_FLAG_RXNE) != RESET)是可以接收数据的。
下面给出无法进入中断的解决方法。
原因:在启动代码中,比如startup_stm32f10x_md.s,
里面是没有关于UART4,UART5的初始化操作的。
解决:将启动文件选为startup_stm32f10x_hd.s(或者其他)
该文件中是有关于UART4,UART5的初始化操作的。或者在startup_stm32f10x_md.s文件中增加 UART4,UART5的初始化操作,但经过实验发现,仅仅增 加UART4,UART5的初始化是不够的。连带其他中断的初始化也同样要复制过来。其实就是把startup_stm32f10x_md.s变的跟 startup_stm32f10x_hd.s一样。
产生上述问题的根本原因:
在创建工程的时候,选择启动文件时,选择的启动文件选择错误。
STM32F103系列单片机中FLASH容量的对应关系如下:
16~32K LD
64K~128K MD 256~512K HD
|