废话不多说先上最终效果图,硬件连接如下所示,野火的开发板在使用串口2和串口3时需要用黄色跳帽如下图连接:

具体代码如下所示:

static void NVIC_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure;/* 嵌套向量中断控制器组选择 */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/* 配置USART为中断源 */NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;/* 抢断优先级*/NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;/* 子优先级 */NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;/* 使能中断 */NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/* 初始化配置NVIC */NVIC_Init(&NVIC_InitStructure);
}void USART2_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;// 打开串口GPIO的时钟DEBUG_USART2_GPIO_APBxClkCmd(DEBUG_USART2_GPIO_CLK, ENABLE);// 打开串口外设的时钟DEBUG_USART2_APBxClkCmd(DEBUG_USART2_CLK, ENABLE);// 将USART Tx的GPIO配置为推挽复用模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART2_TX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DEBUG_USART2_TX_GPIO_PORT, &GPIO_InitStructure);// 将USART Rx的GPIO配置为浮空输入模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART2_RX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(DEBUG_USART2_RX_GPIO_PORT, &GPIO_InitStructure);// 配置串口的工作参数// 配置波特率USART_InitStructure.USART_BaudRate = DEBUG_USART2_BAUDRATE;// 配置 针数据字长USART_InitStructure.USART_WordLength = USART_WordLength_8b;// 配置停止位USART_InitStructure.USART_StopBits = USART_StopBits_1;// 配置校验位USART_InitStructure.USART_Parity = USART_Parity_No ;// 配置硬件流控制USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;// 配置工作模式,收发一起USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;// 完成串口的初始化配置USART_Init(DEBUG_USART2, &USART_InitStructure);NVIC_Configuration();USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);// 使能串口USART_Cmd(DEBUG_USART2, ENABLE);
}
static void NVIC2_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure;/* 嵌套向量中断控制器组选择 */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/* 配置USART为中断源 */NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;/* 抢断优先级*/NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;/* 子优先级 */NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/* 使能中断 */NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/* 初始化配置NVIC */NVIC_Init(&NVIC_InitStructure);
}void USART3_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;// 打开串口GPIO的时钟DEBUG_USART3_GPIO_APBxClkCmd(DEBUG_USART3_GPIO_CLK, ENABLE);// 打开串口外设的时钟DEBUG_USART3_APBxClkCmd(DEBUG_USART3_CLK, ENABLE);// 将USART Tx的GPIO配置为推挽复用模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART3_TX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DEBUG_USART3_TX_GPIO_PORT, &GPIO_InitStructure);// 将USART Rx的GPIO配置为浮空输入模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART3_RX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(DEBUG_USART3_RX_GPIO_PORT, &GPIO_InitStructure);// 配置串口的工作参数// 配置波特率USART_InitStructure.USART_BaudRate = DEBUG_USART3_BAUDRATE;// 配置 针数据字长USART_InitStructure.USART_WordLength = USART_WordLength_8b;// 配置停止位USART_InitStructure.USART_StopBits = USART_StopBits_1;// 配置校验位USART_InitStructure.USART_Parity = USART_Parity_No ;// 配置硬件流控制USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;// 配置工作模式,收发一起USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;// 完成串口的初始化配置USART_Init(DEBUG_USART3, &USART_InitStructure);NVIC2_Configuration();USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); // 使能串口USART_Cmd(DEBUG_USART3, ENABLE);
}
void Usart_SendString( USART_TypeDef * pUSARTx, char *str)
{unsigned int k=0;do {Usart_SendByte( pUSARTx, *(str + k) );k++;} while(*(str + k)!='\0');/* 等待发送完成 */while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET){}
}
void USART3_IRQHandler(void)
{ uint8_t ucTemp;uint8_t ucaRxBuf[256];uint16_t usRxcount=0;if (USART_GetITStatus(DEBUG_USART3,USART_IT_RXNE)!=RESET){ucTemp = USART_ReceiveData(USART3);if(usRxcount < sizeof(ucaRxBuf)){ucaRxBuf[usRxcount++]=ucTemp;}Usart_SendString(USART2,(char *)ucaRxBuf);usRxcount=0;//  while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); }
}

在main函数中只需要调用USART3_Config(); USART2_Config();这两个函数即可

在调试这个代码时最核心的部分就是串口3的那个中断函数USART3_IRQHandler,刚开始的时候我是使用SendData(Usart2,data)将串口3接收到的数据用串口发送出去,但发现这样不行,最后再请教了别人之后,他让我使用了一个缓冲数组,并且用字符串发送的方式,最后成功了!

野火STM32F103开发板使用串口3接收数据并通过串口2发送相关推荐

  1. stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

  2. 看门狗寄存器c语言代码_「正点原子NANO STM32F103开发板资料连载」第十一章 看门狗实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

  3. 野火F1开发板STM32案例-USART使用

    野火F1开发板STM32-USART使用 硬件平台 野火STM32F103ZET6 霸道V2开发板 正点原子F1开发板 STM32蓝色板 软件平台 Keil MDK 5.31 串口调试助手 串口配置步 ...

  4. 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...

  5. [转]stm32 sdio写入速度 SD卡【好文章】[F1开发板通用] 战舰STM32F103开发板 SDIO写入速度测试(使用FATFS)

    http://www.openedv.com/forum.php?mod=viewthread&tid=94284 http://www.openedv.com/forum.php?mod=v ...

  6. UCOS II移植到STM32F103开发板

    早期嵌入式开发没有嵌入式操作系统的概念 ,直接操作裸机,在裸机上写程序,比如用51单片机基本就没有操作系统的概念.通常把程序分为两部分:前台系统和后台系统. 简单的小系统通常是前后台系统,这样的程序包 ...

  7. 野火F1开发板STM32案例-MultiButton移植

    野火F1开发板STM32案例-MultiButton移植 硬件平台 野火STM32F103ZET6 霸道V2开发板 正点原子F1系列开发板 软件平台 Keil MDK 5.31 串口调试助手 Mult ...

  8. [长文干货]MicroPython移植到野火STM32F429开发板

    最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考. 1.移植前准备工作 实验环境: ...

  9. 【小月电子】XILINX FPGA开发板(XLOGIC_V1)系统学习教程-LESSON7串口通信

    串口通信例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们可以 ...

最新文章

  1. 需要更换手机了:由 TensorFlow Lite 构建无人驾驶微型汽车
  2. 好程序员分享SpringBoot须掌握的注解
  3. 全面理解ERC721的实现机制
  4. C++不同排序算法的比较(附完整源码)
  5. cobbler工作流分析
  6. java使用AntPathMatcher进行uri匹配
  7. python语言做法_在Python中使用设置文件的最佳做法是什么?
  8. Gradle 构建 android 应用常见问题解决指南
  9. Java并发编程实战——并发编程的优缺点
  10. Idea 远程调试服务器
  11. 手把手搭建K3cloud插件开发环境
  12. 计算机学院手绘,PS电脑手绘效果绘画教程
  13. idea配置阿里云镜像失败解决
  14. Python串口通信发送浮点型数据
  15. 热那亚中文离线地图App上线
  16. SetTexture()
  17. Windows11原版镜像
  18. VERSA VGG-4422-U-A120有一种幸福叫微笑
  19. 钉钉、微信抢占移动OA入口,其他OA厂商何去何从?
  20. 小程序如何显示群名称?

热门文章

  1. excel中怎么拆分表格之按指定行数拆分
  2. 电路习题解答 第四章 4-9、4-10
  3. 技术之美[程序人生]一篇IT企业工资表,虽然有些不够准确,但还是可以进行参考的
  4. linux系统怎么做快照,linux LVM快照创建步骤
  5. Hspice仿真验证
  6. linux下统计log文件中某个字段的值,并计算出平均值
  7. A WORDGAME: HANGMAN
  8. 陶国荣著JQuery权威指南PDF
  9. 人类发明的第一代电子计算机,谈谈20世纪人类最伟大的发明之一电子计算机的发展历程...
  10. 教你一秒钟画N多人像素描