stm32中什么叫基于自编库函数建立工程,什么叫基于固件库建立工程呢?区别是码下什么呢?
简单说:
固件库又叫做firmware lib,ST官方做了两套,固件固件早期是库源库标准库,后面是码下fluutef测试需要源码HAL库,其实就是固件固件程序框架。
单片机开发一般包括:驱动开发 + 应用程序
驱动开发就是库源库控制单片机片内外设,如存储、码下通信接口(uart spi iic等)、固件固件定时器等
应用程序就是库源库用户逻辑代码。
ST官方提供的码下库主要是帮我们简化编程,抽象底层操作,固件固件使我们更专注用户程序开发。库源库比如:
我们要控制GPIO,码下那么我们可能需要去查看寄存器、配置时钟使能、android项目源码公众号上下拉、驱动能力、输入输出、中断方式、管教复用等,这些很琐碎很容易出错,但是使用库函数调用函数就OK了。
还有一个巨大的DNF开手游源码好处是:程序移植性更好!!!
ST很良心,当然大牛也可以自己实现自己的库。
(一)ST官方例程学习前置知识
在STMCubeMX的使用过程中,初学者可能会遇到下载固件库的问题。当你选择不同系列的STM芯片,如STMF0和STMF1,仿华为侧边栏源码它会自动下载对应系列的固件包,这些文件通常存放在C:\Users\你的用户名\STMCube\Repository中。例如,对于用户XiaoFan,文件夹中会包含F1系列的固件库,其中的Projects文件夹存放着官方的例程。
打开F1系列的例程文件夹,你会看到以官方开发板命名的速战速决公式源码子文件夹,以及一个包含教程说明的HTML文件。本文将重点学习HAL库IIC系列教程,官方教程通常以两块板子做示例,但我们只需关注代码写法,使用两个低成本的STMFC8T6进行实验。
进入STMFRB-Nucleo文件夹,你会发现例程被分为几个类别,每个文件夹结构类似且包含Examples文件夹,用于学习HAL库。打开I2C文件夹,你会看到一系列的例程文件。
使用Clion打开这些例程时,初次可能遇到cmake项目的问题,需要添加缺少的Driver文件夹,包括I2C驱动和其他不需要的驱动。复制Driver文件夹到工程文件夹后,创建CMakeLists.txt文件,并添加预定义宏。这样,你便能避免编译错误。
注意,虽然添加了Driver,但可能还需配置OpenOCD以进行烧写,但鉴于本文主要讲解代码学习,这部分内容将不详述。I2C功能复杂,使用Clion进行调试是关键,可通过添加断点或打印语句来检查代码执行。官方例程中,Error_Handler函数常用于调试,因为它有一个死循环,可以帮助定位问题。
最后,记得下载和配置SVD文件以便查看寄存器值,但调试某些回调函数可能受限。总的来说,通过学习官方例程,你可以逐步掌握STMFC8T6的HAL库IIC功能的使用和调试技巧。
å¦ä½ä½¿ç¨STM
å ³äºè·åSTå ¬å¸çSTMåºä»¶åºæºç ï¼æå ç§æ¹æ³ãæ们å¯ä»¥å¨ç¾åº¦ä¸æï¼ç½ä¸æè¿è¡äºå享ï¼ä¹å¯ä»¥å°STå ¬å¸çå®ç½è¿è¡æ¥æ¾å¹¶ä¸è½½ãä¸è¿ï¼å¦æè±æä¸å¥½çè¯ï¼è¦å¨å®ç½ä¸æ¾å°STMåºä»¶åºç¡®å®æ¯ä»¶å¾ååçäºãå¨å®ç½ä¸å¯ä»¥æ ¹æ®è±ææ示æä¸åæ¡ä»¶è¿è¡çéï¼å ·ä½æä½å¦ä¸å¾æ示ï¼
END
第äºæ¥ï¼æ°å»ºå·¥ç¨æ件夹ââãSTMå·¥ç¨æ¨¡æ¿ã
é¦å ï¼æ°å»ºå·¥ç¨æ件夹ãSTMå·¥ç¨æ¨¡æ¿ãï¼ç¶ååå¨è¯¥æ件夹ä¸æ°å»º6个æ件夹ï¼åå«ä¸ºï¼ãDocãããLibrariesãããListingãããOutputãããProjectãåãUserããå ¶ä¸ï¼ãDocãç¨äºåæ¾åç§è¯´æææ¡£ï¼ãLibrariesãç¨äºåæ¾åç§åºæ件ï¼ãListingãç¨äºåæ¾ç¼è¯æ¶äº§ççä¸é´æ件ï¼ãOutputãç¨äºåæ¾çæçä¸è½½æéçæ件ï¼ãProjectãç¨äºåæ¾å·¥ç¨æ件ï¼ãUserãç¨äºåæ¾ç¨æ·æ件ï¼å³æ们èªå·±ç¼åçåç§æºæ件ãå ·ä½æ åµå¦ä¸å¾æ示ï¼
END
第ä¸æ¥ï¼å建ç«çå·¥ç¨æ件夹ä¸æ·»å åºæ件
å°åºæ件ä¸çincåsrcæ件夹å¤å¶å°æ¨¡æ¿å·¥ç¨æ件夹ä¸çFWLIBæ件夹ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
å°åºæ件ä¸CoreSupportæ件夹ä¸çæ件å¤å¶å°å·¥ç¨æ¨¡æ¿æ件夹ä¸çCMSISæ件夹ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
å°åºæ件ä¸DeviceSupportæ件夹ä¸çç¸å ³æ件å¤å¶å°å·¥ç¨æ¨¡æ¿æ件夹ä¸çCMSISæ件夹ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
å°åºæ件ä¸startupæ件夹ä¸armä¸çæä»¶å ¨é¨å¤å¶å°å·¥ç¨æ¨¡æ¿æ件夹ä¸çstartupæ件夹ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
å°åºæ件ä¸Projectæ件夹ä¸çç¸å ³æ件å¤å¶å°å·¥ç¨æ¨¡æ¿æ件夹ä¸çUseræ件夹ä¸ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
第åæ¥ï¼ä½¿ç¨MDKï¼Keilï¼æ°å»ºå·¥ç¨æ¨¡æ¿
é¦å å¾éæ©CPUï¼è¿ä¸ªå¨æ°å»ºå·¥ç¨æ¶ï¼ä¼æä¸ä¸ªéæ©è¯çççé¢ï¼æ们åªéææ示以åèªå·±çå®é æ åµæ¥éæ©å°±å¥½äºãå ·ä½æä½æ åµå¦ä¸å¾ï¼
æ´æ¹å·¥ç¨åï¼å°é»è®¤çå·¥ç¨åæ¹ä¸ºâTemplateâçæ¹æ³ï¼éä¸å·¥ç¨ï¼æâF2âé®ï¼å¹¶ä¸ºå·¥ç¨æ·»å 项ç®ç»ï¼Add group to projectï¼ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
åå«åå个项ç®ç»ä¸æ·»å æ们ååä»åºä¸å¤å¶è¿æ¥çæ件æ件ï¼Add files to groupï¼ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
第äºæ¥ï¼å·¥ç¨é ç½®
é ç½®Targeté项å¡ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
é ç½®Outputé项å¡ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
é ç½®Listingé项å¡ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
é ç½®C/C++é项å¡ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
é ç½®Debugé项å¡ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
é ç½®Utilitiesé项å¡ãå ·ä½æä½æ åµå¦ä¸å¾ï¼
2024-12-22 22:10
2024-12-22 22:07
2024-12-22 20:58
2024-12-22 20:45
2024-12-22 20:31