STM32

news2025/1/8 18:02:15

一:生成独立的他.h和.c文件

勾选后,生成单独的.h和.c文件。不勾选的话都在main里面。

 

二:常用。

1:电平输出。

HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, PIN_LED_1_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, PIN_LED_1_Pin , GPIO_PIN_RESET);

2:翻转电平。

HAL_GPIO_TogglePin(PIN_LED_1_GPIO_Port, PIN_LED_1_Pin);

3:读取电平。

uint16_t readValue  = HAL_GPIO_ReadPin(PIN_BTN_1_GPIO_Port, PIN_BTN_1_Pin);
	  if(readValue == 0){//按下,灯量
		  HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, PIN_LED_1_Pin , GPIO_PIN_RESET);
	  }
	  else
	  {
		  HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, PIN_LED_1_Pin , GPIO_PIN_SET);
	  }

4:串口发送。

HAL_UART_Transmit()发送

通过轮询,将数据发送出去。

uint8_t buffer1[10]="0123456789";
HAL_UART_Transmit(&huart2, buffer1, 10,0xFFFF);//把buffer1的内容通过uart2发送出去,长度为10,timeout的时间是0xffff

HAL_Delay(1000);

HAL_UART_Transmit_IT()发送

通过中断模式发送,这个模式下需要开启串口中断,否则无法发出数据。

	  /***********方法1********************/
	  uint8_t buffer2[10]="9876543210";
	  HAL_UART_Transmit_IT(&huart2, buffer2, 10);//把buffer1的内容通过uart2发送出去,长度为10,
	  while(huart2.gState != HAL_UART_STATE_READY);


	  /***********方法2********************/
//	  uint8_t buffer2[10]="9876543210";
//	  HAL_UART_Transmit_IT(&huart2, buffer1, 10);//把buffer1的内容通过uart2发送出去,长度为10,
//	  while(HAL_UART_Transmit_IT(&huart2, buffer2, 10) != HAL_OK);

HAL_UART_Receive()接收

串口轮询模式接收,使用超时管理机制。
例如接收一个10个数据。

	  uint8_t rxdata1[10]={0,0,0,0,0,0,0,0,0,0};
      /* 判断是否接收成功 */
      if(HAL_UART_Receive(&huart2, rxdata1, 10, 10000) == HAL_OK)
      {
          /* 将接收成功的数据通过串口发出来 */
          HAL_UART_Transmit(&huart2,rxdata1, 10, 0xffff);
      }

HAL_UART_Receive_IT()接收

串口中断模式接收,这样就可以不需要等待,单片机在没有数据接收时候可以进行其他工作。
例如接收一个10个数据。
定义接收数组。

/* USER CODE BEGIN PV */
  uint8_t Rx_Data[10]={0,0,0,0,0,0,0,0,0,0};
/* USER CODE END PV */

开启接收中断。

  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_IT(&huart2, (uint8_t *)Rx_Data, 10); //开启接收中断,接收10个数据到Rx_Data
  /* USER CODE END 2 */

读取回调函数。

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	/* 将接收成功的数据通过串口发出*/
	HAL_UART_Transmit(&huart2,Rx_Data, 10, 0xffff);
	HAL_UART_Receive_IT(&huart2, (uint8_t *)Rx_Data, 10); //重新开启,接收10个数据到Rx_Data

}
/* USER CODE END 4 */

串口DMA发送

STM32CUBEIDE(8)----USART通过DMA收发_记帖的博客-CSDN博客_同一块板子发送dma,并通过usart接收

串口DMA修改普通传输(只传输一次),还是循环传输(一直循环发送)

 

参考文档:

记帖的博客_CSDN博客-单片机,#STM32,GD32领域博主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

django 登录流程实现

一、简介: 1、用户输入正确的用户名、密码、验证码点击登录即可跳转到管理员页面。 2、用户输入错误的用户名或者密码或者验证码需要错误信息提示(数据校验) 二、实现步骤 1、新建一个项目(创建项目过程和数据库略,…

签完三方后无法去实习,有什么可以弥补的吗?

作者:阿秀校招八股文学习网站:https://interviewguide.cn这是阿秀的第「228」篇原创你好,我是阿秀。2023届秋招已经步入尾声,很多小伙伴都已经找到工作&签约三方,慢慢结束了自己的秋招之旅,不过也有一些…

Local Attention和动态深度卷积间的关系

摘要 Local Vision Transformer 是分别在一个个小的局部窗口中进行注意力计算。 作者将局部注意力重新定义为通道级的局部连接层(channel-wise locally-connected layer),并4个方面进行分析:两种网络的正则化方式,稀疏…

C语言实现九大排序算法(建议收藏!)

文章目录排序算法稳定性1. 插入排序原理排序过程代码实现性能分析2. 希尔排序原理排序过程关于增量取值代码实现性能分析3. 选择排序原理排序过程代码实现性能分析4. 堆排序原理排序过程代码实现性能分析5. 冒泡排序原理排序过程代码实现性能分析6. 快速排序原理Hoare法挖坑法前…

Easy App Locker - 给你的 mac 应用加锁保护你的隐私

Easy App Locker - 给你的 mac 应用加锁保护你的隐私 Easy App Locker可以对Mac上的单个应用进行密码保护。维护Mac上的隐私。 像如果你的某个应用存在隐私数据就可以使用该软件将此应用上锁,这样当你的朋友使用你的 mac 时你就不用担心你的隐私被泄露了&#xff0…

Java中创建线程的五种方式

目录: 前言 1.进程与线程的区别? 2.进程是操作系统进行资源分配的基本单位,而操作系统是以线程为单位进行调度的。 3. Java操作多线程,依赖最核心的类Thread。 4.关于start和run的区别? 5.使用JDK自带的工具jcon…

ArcGIS基础实验操作100例--实验7分割多部分要素

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验7 分割多部分要素 目录 一、实验背景 二、实验数据 (1)查看多…

第05讲:Redis主从复制

一、关于主从复制 1.1、什么是主从复制 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 1.2、主从复制的作用 读写分离,性能扩展容灾快速恢复 二、一主多从的实验 2.1、原…

GitHub+HEXO博客设置主题

文章目录安装主题修改站点配置文件修改主题配置文件部署到github补充由于之前使用HexoGitHub搭建了个人博客用的是最原始的主题,丑的一批QAQ 用一下Github上面Star最高Next主题look look! 上节博客:HexoGitHub搭建个人博客 主题选取网站&a…

CnOpenData中国工业企业基本信息扩展数据

一、数据简介 拉动中国经济的三个产业中,工业企业占有特殊的地位,是推动国内经济发展的重要产业。工业是最主要的物质生产部门,为居民生活、各行业的经济活动提供物质产品,这一重要作用是其他任何产业部门都无法替代的。工业企业为…

拆串后结构化,其中按行对齐

【问题】 I have a bit weired scenario where i need to fetch data i have following three products product1 product2 product3and each product has different ids(e.g. p1345,p3453,p2345) and then each froduct have different options which are having different…

算法题刷累了就来试试游戏吧----2048小游戏----C语言实现

目录 1. 代码前的准备 2. 游戏思路及代码分析 2.1 game.h 代码分析 2.2 test.cpp代码分析 3. 完整代码 3.1 game.h 3.2 game.cpp 3.3 test.cpp 嘿嘿嘿,写游戏还是挺高兴的撒,如果你还不知道2048这个小游戏的规则,那么快去试试吧。不然…

项目管理误区:项目不确定性≠项目风险

项目失败的原因千千万万,罪魁祸首肯定跟“它”脱不了关系! 前段时间,偶然看到一个求助贴引发了各路网友(项目经理)的热议。求助人的问题是:“如何管理项目中的不确定性?” 下面的回复已然偏离答…

Linux系统运行时参数命令--文件IO性能监控

目录 4 文件IO性能监控 4.1 I/O 的两种方式(缓存 I/O 和直接 I/O) 1 缓存 I/O 2 直接 I/O 4.2 监控磁盘I/O的命令 1 iostat IO状态 2 swapon查看分区使用情况 3 df硬盘使用情况 4 du目录文件大小 4.3 文件IO写入频繁案例分析 C/CLinux服务器开发/后台架构师【零声教育…

IU8689+IU5706 单声道100W/立体声60W同步升压+功放IC大功率拉杆音箱应用组合方案

引言 目前中大功率拉杆音箱主要采用12V铅酸电池为供电电源,在电源直供的时候,一般的功放芯片输出功率在20W左右(喇叭为4欧、THD10%)。超过50W的功率现阶段市场上主要采用升压芯片TPA3116的组合解决方案。 随着竞争的加剧&#x…

如何进行数据可视化图表设计?

如何进行数据可视化图表设计? 对数据人来说,数据可视化是分析理解数据,并最终呈现数据的必修课。本文从以下几个点来说明,如何进行数据可视化图表设计。1、数据背后的故事2、充分理解数据3、多种图表类型设计指南 1数据背后的故…

安克创新能否锚定全球家用储能市场 隆起新的增长极?

提到能源储存,似乎应该是涉及一个国家或者地区的宏大概念。但事实上,储能正在走向家用领域。 近年来,全球能源价格持续高涨,但家用储能的成本却随着锂电等新能源技术的发展在逐渐下降,经济性开始凸显。家用储能在海外…

用HTML制作独一无二的2022回忆旋转相册

目录 前言 效果展示 流程 前言 元旦即将来临,展望2022,我们可以制作一个自己的2022回忆的旋转相册,通过下面的方法来学习吧 效果展示 制作好后,十张相册会在下面旋转,可以改为自己想要放的照片和音乐,制…

史上最简单的推箱子(AS3.0版)

我最熟悉的语言是 AS3.0,现在主要用C,还想学学Python,因此,最近一段时间先用AS3.0实现了最简版的推箱子、贪吃蛇和俄罗斯方块,然后换Python实现,算是熟悉了一下Python的基本用法,最后用C实现&a…

微信小程序 Spdier - OfferShow 反编译逆向(一)

微信小程序 Spdier - OfferShow 反编译逆向(一) 文章目录微信小程序 Spdier - OfferShow 反编译逆向(一)前言一、任务说明1.尝试反编译分析出js_code参数的生成方式,用来获取token2.将小程序搜索出来的数据保存至本地e…