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

外贸网站模板 免费礼盒包装设计网站

外贸网站模板 免费,礼盒包装设计网站,义乌加工厂外发加工,阜新百姓网免费发布信息文章目录 前言一、HAL库的本质1.1 HAL库的本质是操作寄存器1.2 自己实现HAL_GPIO_WritePin寄存器通过寄存器的操作点灯代码概况Port bit set/reset register寄存器 总结 前言 在嵌入式系统开发中#xff0c;HAL#xff08;Hardware Abstraction Layer#xff09;库是一个重… 文章目录 前言一、HAL库的本质1.1 HAL库的本质是操作寄存器1.2 自己实现HAL_GPIO_WritePin寄存器通过寄存器的操作点灯代码概况Port bit set/reset register寄存器 总结 前言 在嵌入式系统开发中HALHardware Abstraction Layer库是一个重要的概念它提供了一个抽象层使开发者可以更容易地编写可移植的代码而不必担心底层硬件的细节。STM32CubeMX是一款由STMicroelectronics提供的工具用于生成STM32微控制器的初始化代码其中包括了HAL库的使用。 HAL库的本质与HAL库源码分析 HAL库的本质是一个由供应商提供的软件库旨在提供一系列抽象接口用于访问底层硬件资源如GPIO、USART、I2C等。这些接口隐藏了底层硬件的细节使得开发者能够以统一的方式进行开发而不必担心不同型号或者不同系列的微控制器的差异。 HAL库的源码分析可以揭示其内部的工作原理和实现细节。通过分析源码我们可以了解到每个函数的具体功能、调用关系以及与底层硬件交互的细节。HAL库通常包括了对不同硬件模块的驱动程序这些驱动程序是与特定型号的微控制器兼容的。 一、HAL库的本质 1.1 HAL库的本质是操作寄存器 其实点灯就是操作下面的output data register 比如我们之前点灯写的HAL_GPIO_WritePin()他的源码如下 void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) {/* Check the parameters */assert_param(IS_GPIO_PIN(GPIO_Pin));assert_param(IS_GPIO_PIN_ACTION(PinState));if (PinState ! GPIO_PIN_RESET){GPIOx-BSRR GPIO_Pin;}else{GPIOx-BSRR (uint32_t)GPIO_Pin 16u;} }他去设置某个寄存器等于某个值这叫是HAL库的本质 1.2 自己实现HAL_GPIO_WritePin 寄存器 CPU可以发出地址然后访问比如Flash、RAM、GPIOC 我们可以通过访问某一个地址区间去访问Flash 访问其他地址访问GPIOC等等等等 我们可以访问ram写入val读出仍是val 我们可以访问flash使用读出指令不能直接写 在GPIOC里面有很多的寄存器但我们不能像操作ram和flash一样这些寄存器的功能各有不同 比如说以我这个F103ZE为例子 比如Port configuration配置寄存器一个低位一个高位 比如输入寄存器Port input data通过读他可以得到引脚的状态/数据 比如输出寄存器Port output data我们可以通过写这个寄存器让这个引脚输出高低电平 还有一些其他的 通过寄存器的操作点灯 我们可以在芯片手册中找到GPIOC的基地址在看GPIOC的输出寄存器偏移地址可以得出要访问输出寄存器就要访问0x400110C这个地址的寄存器 比如说举个例子我们可以通过一个C语言的指针指向这个要操作的寄存器 然后把里面的值给改变了是不是就操作了寄存器的值 他的每一个寄存器的大小都是2bytes 首先我们使用指针指向寄存器的位子 unsigned int *p; p (unsigned int*)0x40010C0C;接下来我们需要操作第十三个寄存器即可点亮我们的灯 比如我们可以这样设置他为1 unsigned int val *p; val val | (15); *p val;我们可以这样设置他为0 val *p; val val ~(15); *p val;这样我们就通过寄存器输出高低电平了 要注意的是比如你要操作GPIOC里面的13你就要移13像下面这样其他的也是一样 要操作哪个引脚就偏移他的引脚名称我这里的灯是PB5所以就把他的地址里面的值偏移5即可 代码概况 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */unsigned int *p;p (unsigned int*)0x40010C0C;/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){unsigned int val *p;val val | (15);*p val;HAL_Delay(500);val *p;val val ~(15);*p val;HAL_Delay(500);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */Port bit set/reset register寄存器 像我们上面我们需要把寄存器的内容拿出来然后通过控制某一位的0/1来操作高低电平这样稍微有点麻烦那么我们可以使用下面这个寄存器Port bit set/reset register他只需要写入1到某一位就可以输出高电平/低电平 他是一个32位的寄存器 比如BRy 他写入1就把指定的GPIO reset 0就是没有任何作用 比如BSy 他写入1就是指定GPIO set 0就是没有任何作用 那么我们就可以把代码变成这样 unsigned int *p;p (unsigned int*)(0x40010C00 0x10);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){unsigned int val *p;*p (1 21);HAL_Delay(500);*p (1 5);HAL_Delay(500);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */通过写21位把他变成reset状态 通过写5位把他变成set状态这样就实现了闪烁灯 总结 HAL库作为嵌入式系统开发中的重要工具提供了一种方便、快捷的方式来访问STM32微控制器的硬件资源。通过使用HAL库开发者可以更加专注于应用程序的开发而不必花费大量时间去编写底层的驱动程序。通过深入分析HAL库的源码我们可以更好地理解其内部实现细节从而更好地利用这一工具来开发高效、可靠的嵌入式应用程序。
http://www.pierceye.com/news/726332/

相关文章:

  • 网站有什么到期wordpress怎么编辑保存
  • 服务器添加网站300500启迪设计
  • 上海市建设安全协会网站移动端页面
  • 手机做网站公司成都住房和城乡建设厅官网
  • 锋创科技园网站建设网站开发ide php
  • 山东做网站的公司有哪些电脑怎么制作视频短片
  • 书画网站 建站维护网站成本
  • 什么事网站开发网站服务器租用报价
  • 做黏土的网站青岛网站建设微动力
  • 建网站权威公司广告发布平台
  • 自助游网站开发分析报告总结怎么注册公司微信公众号
  • 网站开发公司业务员培训黄聪wordpress
  • 网站规划与建设ppt模板下载响应式网站模板费用
  • 江苏商城网站建设服务网站建设优化石家庄
  • 高师院校语言类课程体系改革与建设 教学成果奖申报网站wordpress 4.8.2 漏洞
  • 以小说名字做网站的小说网wordpress的数据库主机
  • 永嘉高端网站建设价格h5页面制作多少钱
  • 北京网站建设课程培训WordPress分类id在哪
  • 宁夏网站备案青岛专业网站建设公司
  • 廊坊营销网站团队佛山市创意动力信息科技有限公司
  • 怎么学习做网站网络公司 网站建设
  • 网站权重怎么提升网站开发多线程开发
  • wordpress下拉列表沈阳网站排名优化
  • 非自己的网站如何做二次跳转免费建英文网站
  • 广州建筑集团网站企业大型网站开发网站模板设计
  • 漯河网站推广多少钱做调查网站的问卷哪个给的钱高
  • 局域网下怎么访问自己做的网站做网站时如何将前端连接到后台
  • 网页设计与网站建设考试名词解释长治县网站建设
  • 商务网站建设实训报告总结南京太阳宫网站建设
  • 网站建设合同缴纳印花税吗建设企业网站官网登录