当前位置: 首页 > news >正文

南昌做网站营销软件网站

南昌做网站,营销软件网站,wordpress主题模版在那个文件夹,公司主页网址这篇文章将详细介绍 串口 发送数据,接受数据。 文章目录 前言一、串口的基础知识二、cubeMX 配置三、自动生成代码解析四、串口发送数据函数五、使用串口收发数据点亮 led重定向函数: 总结 前言 实验开发板:STM32F103C8T6。所需软件&#xf…

这篇文章将详细介绍 串口 发送数据,接受数据。

文章目录

  • 前言
  • 一、串口的基础知识
  • 二、cubeMX 配置
  • 三、自动生成代码解析
  • 四、串口发送数据函数
  • 五、使用串口收发数据点亮 led
      • 重定向函数:
  • 总结


前言

  • 实验开发板:STM32F103C8T6。
  • 所需软件:keil5 , cubeMX 。
  • 实验目的:了解 串口的基础知识,掌握串口如何发送,接收数据 。
  • 实验:串口发送数据点亮 led。

一、串口的基础知识

如果想了解串口的基础知识可以参考我之前的文章:
STM32Cube串口USART发送接收数据
STM32CubeMX串口USART中断发送接收数据

二、cubeMX 配置

  1. 选择芯片,开始创建工程。
    在这里插入图片描述
  2. 设置 仿真。
    在这里插入图片描述
  3. 配置时钟,选择 HSE, 高速时钟。
    在这里插入图片描述
  4. 设置时钟频率。
    直接设置为 最大频率 72 ,然后双击 enter 即可。
    在这里插入图片描述
  5. 设置工程的名字,工具链选择 MDK。
    在这里插入图片描述
  6. 点击自动生成 .c / .h 文件。
    在这里插入图片描述
  7. 这里我使用串口2 ,USART2。然后选择异步模式。
    对于 USART2 可以是 同步也可以是异步。而 UART 只可以是 同步。
    在这里插入图片描述
  8. 点击 NVIC, 使能中断。在这里插入图片描述
  9. 设置 相关参数(波特率,数据长度,校验位,停止位)
    在这里插入图片描述
  10. 可以看到这里出现了两个 PA2, PA3 引脚,分别是 发送引脚,接收引脚。
    在这里插入图片描述
  11. 点击生成即可。
    这样就可以生成 keil 的工程文件。
    在这里插入图片描述

三、自动生成代码解析

使用 cubeMX 生成的 串口代码都放在 usart.c 中。

  1. 首先还是 先定义一个 串口对象,这是一个结构体。

  2. 初始化这个结构体中的相关参数。然后调用 HAL_UART_Init(&huart2) 对其初始化。

  3. 之后自动调转到HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) 执行。

  4. __HAL_RCC_USART2_CLK_ENABLE(); 开启串口 2
    由于 PA2, PA3 引脚,所以使用 __HAL_RCC_GPIOA_CLK_ENABLE();使能 gpio 端口。

  5. 配置引脚:
    这里 PA2 作为复用引脚(除了作为串口发送端,可能还具有其他的功能),它的工作模式 是GPIO_MODE_AF_PP复用推挽输出。

  6. HAL_NVIC_SetPriority(USART2_IRQn, 0, 0) 设置优先级
    HAL_NVIC_EnableIRQ(USART2_IRQn); 使能中断

在这里插入图片描述
在这里插入图片描述

四、串口发送数据函数

  1. 发送数据。串口发送数据有 2 种写法。(有无中断)

这里我主要介绍最后一个参数 超时时间 Timeout 。 当使用这个函数 发送数据时,如果超过该时间,则直接返回错误,不再执行该函数。

HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)

以中断的方式发送数据。这里就不需要超时时间了。

HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
  1. 接收数据。
  • 开启串口中断接收函数:
    每次接收到数据后,都要再次开启中断接收函数。这样才可以多次接收数据
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
  • 串口中断接收回调函数:
    当接收到数据时,就会调用该函数。
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

五、使用串口收发数据点亮 led

这里如果要点亮 led ,要在cubeMX 中配置 led 引脚。

uint8_t rx_buff = 0;									// 存放接收的数据/* 每次接收到数据后都会调用该串口回调函数 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart == &huart2){if(rx_buff == 0xa1)											// 发送 a1 点亮 led{printf("LED ON\r\n");								// 使用 printf 发送数据,需重定向 fputc 函数HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);}else if(rx_buff == 0xa2)									// 发送 a2 熄灭 led{printf("LED OFF\r\n");HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);}}HAL_UART_Receive_IT(&huart2,&rx_buff,1);							// 再次开启接收
}

重定向函数:

发送数据,可使用 printf
由于 printf 依赖于 fputc 函数,所以可以重定向 fputc 来实现 printf 串口发送数据。

int fputc(int ch, FILE* f)
{while(HAL_UART_Transmit(&huart2,(uint8_t*)&ch,sizeof(ch)-1,300) != HAL_OK);return 0;
}

接收数据可以使用 scanf

int fgetc( FILE *f)       /* scanf 输入 */
{char c = 0;while(HAL_UART_Receive(&huart1, (uint8_t *)&c, 1, 300) != HAL_OK);return c;
}

总结

下一篇文章为大家介绍 STM32 超声波 模块的使用。

http://www.hkea.cn/news/360696/

相关文章:

  • 找人合伙做网站平台仿站定制模板建站
  • 深圳市网站建设科技公司腾讯网网站网址
  • wordpress语言文件夹seo销售好做吗
  • 河北建设集团官网西安网站seo
  • 在外汇局网站做登记报告恢复原来的百度
  • 做外贸做的很好的网站全国疫情突然又严重了
  • 开发app需要什么样的团队百度seo优化培训
  • ftp上传网站之后软文什么意思范例
  • 询广西南宁网站运营推广系统
  • wordpress侧边栏小工具佛山网站优化
  • 用vs做网站原型企业培训课程有哪些内容
  • wordpress评论自定义百度刷排名seo
  • 四川建设网官网登录入口泉州seo外包
  • 网站有备案 去掉备案网络营销意思
  • 新建网站推广给企业百度问一问在线咨询客服
  • 曹鹏wordpress建站seo视频广东疫情防控措施
  • 网站开发的岗位排名优化工具
  • 岳阳做网站怎么做推广让别人主动加我
  • 不断改进网站建设公司百度官网优化
  • 万户网站宁波网站制作优化服务
  • 潍坊快速网站排名网站是怎么做出来的
  • 聚美优品的pc网站建设注册网址
  • 陕西省住房与城乡建设厅网站免费b站推广软件
  • 淮南市住房与城乡建设部网站网店买卖有哪些平台
  • 网页qq表情佛山百度快速排名优化
  • 网站建设方案论文1500社会新闻最新消息
  • 网站组建 需求分析市场监督管理局职责
  • 云课堂哪个网站做的好厦门关键词优化seo
  • 中企动力沈阳分公司seo免费诊断电话
  • 网站vps被黑湖人最新排名最新排名