本帖最后由 tiangengqiu 于 2023-7-30 23:24 编辑
APM32F003系列拥有丰富的3个串口,是个性价比很高的32位单片机,可外接多个串口模块,进行快速方案验证及其落地量产,广泛应用于各个领域,无主机倒车雷达,扫地机器人惯导模组,气体检测传感器,智能马桶盖配件板,按摩仪,智能饮水器龙头设备等等..得到广大市场认可,可硬件管脚sxx8s003x6系列产品。以下是APM32F003系列的3个Uart 收发的示例配置代码:
初始化串口
- void USART1Init(void)
- {
- USART_Config_T usartConfig;
-
- /** BaudRate is 9600 */
- usartConfig.baudRate = 115200;
- /** No interrupt */
- usartConfig.interrupt = USART_INT_RX;
- /** Enable receiver */
- usartConfig.mode = USART_MODE_TX_RX;
- /** Parity disable */
- usartConfig.parity = USART_PARITY_NONE;
- /** One stop bit */
- usartConfig.stopBits = USART_STOP_BIT_1;
- /** Word length is 8bit */
- usartConfig.wordLength = USART_WORD_LEN_8B;
-
- USART_Config(USART1, &usartConfig);
-
- USART_Enable(USART1);
-
-
- /** Enable USART1 Receiver IRQ request */
- NVIC_EnableIRQRequest(USART1_RX_IRQn, 0x01);
- }
- /*!
- * [url=home.php?mod=space&uid=247401]@brief[/url] USART Init
- *
- * @param None
- *
- * @retval None
- *
- * @note
- */
- void USART2Init(void)
- {
- USART_Config_T usartConfig;
-
- /** BaudRate is 9600 */
- usartConfig.baudRate = 115200;
- /** No interrupt */
- usartConfig.interrupt = USART_INT_RX;
- /** Enable receiver */
- usartConfig.mode = USART_MODE_TX_RX;
- /** Parity disable */
- usartConfig.parity = USART_PARITY_NONE;
- /** One stop bit */
- usartConfig.stopBits = USART_STOP_BIT_1;
- /** Word length is 8bit */
- usartConfig.wordLength = USART_WORD_LEN_8B;
-
- USART_Config(USART2, &usartConfig);
-
- USART_Enable(USART2);
-
-
- /** Enable USART2 Receiver IRQ request */
- NVIC_EnableIRQRequest(USART2_RX_IRQn, 0x01);
- }
- void USART3Init(void)
- {
- USART_Config_T usartConfig;
-
- /** BaudRate is 9600 */
- usartConfig.baudRate = 115200;
- /** No interrupt */
- usartConfig.interrupt = USART_INT_RX;
- /** Enable receiver */
- usartConfig.mode = USART_MODE_TX_RX;
- /** Parity disable */
- usartConfig.parity = USART_PARITY_NONE;
- /** One stop bit */
- usartConfig.stopBits = USART_STOP_BIT_1;
- /** Word length is 8bit */
- usartConfig.wordLength = USART_WORD_LEN_8B;
-
- USART_Config(USART3, &usartConfig);
-
- USART_Enable(USART3);
-
-
- /** Enable USART3 Receiver IRQ request */
- NVIC_EnableIRQRequest(USART3_RX_IRQn, 0x01);
- }
中断接收处理
- void USART1RxIsr(void)
- {
- uint8_t Res;
- if(USART_ReadIntFlag(USART1, USART_INT_FLAG_RX) == SET)
- {
- Res=USART_RxData8(USART1);
- USART_TxData8(USART1, Res);
- }
- }
- void USART2RxIsr(void)
- {
- uint8_t Res;
- if(USART_ReadIntFlag(USART2, USART_INT_FLAG_RX) == SET)
- {
- Res=USART_RxData8(USART2);
- USART_TxData8(USART2, Res);
- }
- }
- void USART3RxIsr(void)
- {
- uint8_t Res;
- if(USART_ReadIntFlag(USART3, USART_INT_FLAG_RX) == SET)
- {
- Res=USART_RxData8(USART3);
- USART_TxData8(USART3, Res);
- }
- }
若需要增加printf打印,需要进行重定向
1、工程配置

2、重定向
- ①、添加头文件 #include "stdio.h"
特殊串口使用注意事项
由于uart2 与烧录swd接口冲突,使用前需要进行失能SWD接口功能

- //示例代码
- GPIO_DisableJTAG();
- USART2Init();
uart3串口IO内部没有内部上拉,使用时需要硬件设计需要加上外部上拉,否则数据手法出现乱码

003-uart.rar
(1.64 MB, 下载次数: 43)
|