Arduino和HAL库函数编程
HAL和标准库的比较
一、标准库
STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式。
二、HAL库
HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,但使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有。而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极。
比较:库函数配置好串口以后,当串口接收到数据再发送给上位机时需要循环发送,但是HAL库就直接调用HAL_UART_Transmit函数就能直接将串口的数据发给上位机。库函数不免比HAL更加的麻烦。
库函数的串口通信函数只适用于STM32F1系列,对于其他系列的就不能通用了;但是对于HAL库来说,只要外设相同,基本上能够很容易的移植。可以说HAL库就是用来取代之前的标准外设库的。
总的来说,HAL库表现出更高的抽象整合水平,对于新手而言,HAL更加的友好,但是如果想要更好的理解代码实现的原理以及对寄存器的调用原理,标准库更好。
Arduino安装和环境配置
1.安装
linkhttps://blog.csdn.net/quansirx/article/details/104906563
我的博客是参考的以上链接博客,需要软件资源的同学可以到上面链接里面博客去取,同时也感谢上面博客作者。
点击应用程序执行安装步骤,安装完成后将Arduino_STM32文件夹移动到安装目录下的hareware文件夹里
2.环境配置
点击开发板管理
2.安装开发板32-bits ARM Cortex-M3
Arduino实战
1.双击打包文件中的flash_loader_demo_v2.8.0.exe安装
首先把板子上的boot0置为1,然后在系统菜单中找到Demonstrator GUI并打开