找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12220|回复: 5
打印 上一主题 下一主题
收起左侧

STM32串口通信简单例子(注释完整详细)

  [复制链接]
跳转到指定楼层
楼主
ID:365414 发表于 2018-7-5 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32基本的串口通信调试实验,实验现象:发送内容在串口调试助手上显示。


单片机源程序如下:
  1. #include "stm32f10x.h"




  2. void My_USART1_Init(void)
  3. {
  4.         GPIO_InitTypeDef GPIO_InitStrue;//定义IO接口结构体
  5.         USART_InitTypeDef USART_InitStrue;//定义串口相关结构体
  6.         NVIC_InitTypeDef NVIC_InitStrue;//定义中断相关结构体
  7.         
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//初始化GPIOA时钟
  9.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//初始化串口USART时钟
  10.         
  11.         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;//推挽复用输出
  12.         GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;//开启9号IO口
  13.         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;//端口速度10MHz
  14.   GPIO_Init(GPIOA,&GPIO_InitStrue);//GPIOA9初始化
  15.         
  16.         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
  17.         GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;//开启10号IO口
  18.         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;//端口速度10MHz
  19.   GPIO_Init(GPIOA,&GPIO_InitStrue);//GPIO10初始化
  20.         
  21.         USART_InitStrue.USART_BaudRate=115200;//串口波特率设置
  22.         USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//无硬件流
  23.         USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//发送,接收使能
  24.         USART_InitStrue.USART_Parity=USART_Parity_No;//无奇偶校验
  25.         USART_InitStrue.USART_StopBits=USART_StopBits_1;//停止位为1
  26.         USART_InitStrue.USART_WordLength=USART_WordLength_8b;//字长8位
  27.         USART_Init(USART1,&USART_InitStrue);//USART1初始化
  28.         USART_Cmd(USART1,ENABLE);//使能串口1
  29.         
  30.         USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//中断配置:开启接收中断(接受缓存器非空使能,ENABLE)
  31.         NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;//定义中断通道
  32.         NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;//开启中断通道
  33.         NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;//设定抢占优先级为1
  34.         NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;//设定子优先级为1
  35.         NVIC_Init(&NVIC_InitStrue);//中断初始化
  36. }

  37. void USART1_IRQHandler(void)//编写中断处理函数
  38. {
  39.         u8 res;//无符号字符res
  40.         
  41.          if(USART_GetITStatus(USART1,USART_IT_RXNE))//接收数据进入中断,判断串口1接收缓存器非空使能为1与否
  42. {
  43.      res= USART_ReceiveData(USART1); //为1,则将串口1的数据给变量
  44.      USART_SendData(USART1,res);   //继续将此数据从USART1发送出去
  45.   }
  46. }

  47. int main(void)
  48. {        
  49.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设定优先级分组为2,2位抢占2位响应
  50.         My_USART1_Init();//调用串口函数
  51.          while(1);//无数据时死循环,有数据时进中断收数据发数据完了再读主程序
  52.          
  53. }
复制代码

所有资料51hei提供下载:
串口通信.rar (286.91 KB, 下载次数: 274)


评分

参与人数 1黑币 +5 收起 理由
菜用鸡 + 5 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94642 发表于 2018-12-14 08:47 | 只看该作者
顶支持威武
回复

使用道具 举报

板凳
ID:360992 发表于 2019-1-5 15:34 | 只看该作者
用哪个串口调试助手???怎么用?
回复

使用道具 举报

地板
ID:284155 发表于 2019-4-22 17:48 | 只看该作者
顶支持威武
回复

使用道具 举报

5#
ID:556118 发表于 2019-12-10 22:34 | 只看该作者
收藏先,慢慢研究。谢楼主!
回复

使用道具 举报

6#
ID:748904 发表于 2020-5-18 16:59 | 只看该作者
感谢分享,很有帮助
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表