STM32基于CubeIDE和HAL库 基础入门学习笔记:基础知识理论 开发环境建立

news2024/11/19 18:37:28

文章目录:

一:开发板和基础知识理论

1.开发板 

2.基础知识理论*

二:CubeMX图形化编程

1.设置时钟(心脏)

1.1 开启RCC功能 

1.2 开启RTC功能

1.3 配置时钟树

2.设置端口(五官四肢)

3.工程编译和下载

编译设置

工程编译

三:HAL库的结构和使用

1.HAL库的整体结构 

2.HAL库的使用 

 四:STM32CubeIDE(内含STM32CubeMX代码辅助工具)

1.STM32CubeIDE软件下载安装汉化配置 

2.STM32CubeIDE工程建立 

主界面 

端口与配置界面

时钟设置界面

工程管理界面

编程界面


一:开发板和基础知识理论

1.开发板 

2.基础知识理论*

A:HAL库与标准库的关系
    HAL库
        CubeIDE图形化界面自动生成程序代码
        用户不需要了解底层库函数的原理,图形化配置
        官方主推HAL库+CubelDE开发环境,不断更新
    标准库
        用户自行复制/修改程序代码
        用户需要了解部分底层函数原理,以方便修改配置
        官方已停止更新,稳定性好


B:CubeIDE与KEIL软件的关系
    CubeIDE
        由ST公司开发,专用于自家的STM系列单片机
        只能用于STM32、STM8等ST的单片机开发
        集成了图形化界面、编辑器、编译器、仿真器
        集成度高,针对STM单片机有优化
        支持微软Windows/苹果macOS/Linux多系统
        #用CubelDE做HAL库开发:加载库文件、图形化配置、生成代码编辑编译、下载、仿真等功能都在CubeIDE内部无缝完成
    KEIL MDK
        由ARM公司开发,通用于所有ARM单片机
        可用于STM、AT等所有ARM单片机开发
        集成编辑器、编译器、仿真器,无图形界面·通用性强,无特别优化
        支持微软Windows
        #用KEIL做HAL库开发:加载库文件、图形化配置、生成代码在CubeMX完成编辑编译、下载、仿真在KEIL完成。不断切换多个软件


C:RCC时钟与延时函数
    1.RCC的时钟树
        1.1 内核与外设时钟
            SYSCLK时钟
            HCLK时钟
            FCLK时钟
            PCLK时钟
            ADC功能时钟
        1.2 独立时钟
            RTC时钟
            IWDG独立看门狗时钟
            FLASH编程时钟
            USB接口时钟
            MCO时钟输出:PA8接口被占用 先改成MCO模式——>进入System Core式——>RCC——>勾选Master Clock Output
    2.RCC的程序代码
        2.1 启动文件中的代码
            start_up_stm32fxxx.s文件
        2.2 CubeMX生成的代码
            main.c里面去跳转
        2.3 程序中如何修改时钟设置
            stm32fxxx_ex.h
    3. HAL库中的延时函数
        HAL_Delay (1);    //自定义时间

二:CubeMX图形化编程

1.设置时钟(心脏)

1.1 开启RCC功能 

禁用:Disable
旁路时钟源:BYPASS Clock Source
晶体与陶瓷振荡器:CrystalCeramic Resonator

1.2 开启RTC功能

1.3 配置时钟树

2.设置端口(五官四肢)

引脚模式设置 

 

 

3.工程编译和下载

1.编译工程
    1.1 生成代码:点击保存或者Device Configuration Tool Code Generation按钮
    1.2 编译设置:项目——>属性里面
    1.3 工程编译:点击锤子图标进行编译


2.程序下载
    2.1 Flymcu下载:使用USB串口下载,USB接口插入串口上
        a 连接到电脑的USB接口 连接到核心板的MicroUSB接口
        b 安装USB串回驱动的显示:没有就安装CH340驱动程序
        c Flymcu软件安装运行:点击要下载的.hex文件
               
    2.2 CubelDE仿真器下载
        a ST-LINK仿真器,连接到开发板的JTAG接口
        b USB连接到开发板MicroUSB接口进行供电
        c 设置JTAG模式:System Core——>SYS—>JTAG
        d 仿真器设置:点击运行——>运行配置——>STM32 Cortex-M C/C++ Application——>QC_TEST Debug——>调试器——>调试探头ST-LINK——>勾选SWD——>确定
        e 点击绿色运行按钮
        
    2.3 ST-LINK Utility软件下载:ST-LINK仿真器,连接到开发板的JTAG接口
        a 连接到电脑的USB接口 连接到核心板的MicroUSB接口
        b 打开Flymcu软件——>点击清除芯片
        c 打开Utility软件——>点击打开图标 选择.hex文件——>点击连接仿真器图标
        d 点击下载图标——>设置SWD——>点击OK——>勾选Reset ahtee peogroneing复位——>start


3.修改参数重新下载

编译设置

工程编译

 

三:HAL库的结构和使用

1.HAL库的整体结构 

1.HAL库的整体结构
    1.1 文件夹结构
        Core             存放着内核代码
            Inc:用于存敝各功能的h库文件
            Src(main.c):用于存敝各功能的c文件
            Starup:用于存放汇编语言的单片机启动文件

        Debug            存放着与仿真器调试相关的文件,里面有“.hex”文件

        Drivers          存放着HAL库和相关的驱动程序文件
            CMSIS:软件接口标准化文件(内核与硬件之间的底层协议)
                Device:STM32F1单片机的底层库文件
                Include:ARM内核与STM32F1单片机硬件之间的底层协议库文件
            STM32Fx_Driver:HAL库文件
                HAL库各功能的h文件
                HAL库各功能的c文件

        icode            存放"用户自建"的板级硬件驱动程序

        Middlewares      存放着与“中间件”相关的驱动程序文件

        USB_DEVICE       存放着USB从设备的驱动程序文件

        .project         CubeIDE工程的启动文件

        .ioc             CubeMX图形界面的启动文件



    1.2 HAL库文件结构
            用户应用程序
            功能驱动层HAL库(面向用户)
            芯片驱动层HAL库(中间层)
            底层HAL库(操作硬件寄存器)
            单片机硬件

2.HAL库的使用 

2.HAL库的使用
    2.1禁用HAL库的方法
        CubeMX图形化界面——>Project Manager工程管理——>Advanced Setting高级子选项卡——>勾选Do Not Generate Function

    2.2改用LL库的方法
        CubeMX图形化界面——>Project Manager工程管理——>Advanced Setting高级子选项卡——>顶部Driver Selector下面——>点击需要修改的功能(可选择HAL库或LL库)

 四:STM32CubeIDE(内含STM32CubeMX代码辅助工具)

1.STM32CubeIDE软件下载安装汉化配置 

下载:官网下载、博主提供连接直接下载 提取码:1111

汉化:汉化包地址

复制地址(举例):http://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/R0.19.2/2021-09/


添加汉化包:打开CubeIDE——>Help——>Install New Software——>Add——>复制上面的地址
            Babel Language Packs in Chinese (Simplified)——>勾选一个汉化包

2.STM32CubeIDE工程建立 

1.新建工程
    文件——>新建——>STM32 Project——>左边MCU/MPU Selector(单片机/微处理器选择器)——>下方Part Number(型号)的下拉列表中——>选择自己芯片的型号(比如STM32F103C8)
                               ——>在右边双击选中正确的型号和封装——>点击下一步
    输入工程名称——>去掉勾选Use default location——>设置自己的路径——>点击完成


2.安装HAL库(可能没有)
    下拉框中选中版本号(一般选择最新款)——>勾选第三个Copy only the necessary library files代码生成器——>点击完成——>点击是——>HAL库的安装过程(等待几分钟)
        在具链项目配置文件中添加要的库文件作创为引用
        将所有使用的库复制到项目文件夹t中
        只复制需要用到的库文件


3.图形界面
    3.1 端口与配置
    3.2 时钟设置
    3.3 工程管理
    3.4 工具
4.编程界面

主界面 

 

端口与配置界面

 

时钟设置界面

选项卡前出现红叉:有红色背景,表示频率超出范围

 

工程管理界面

 

 

编程界面

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

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

相关文章

Shopee、国际站卖家测评自养号方法大揭秘!

很多虾皮卖家都会经常提到“权重”这个词语,什么是权重?权重的作用是什么?如何提高产品的权重?今天就带大家来仔细了解下这个“权重”。 什么是权重? 权重泛指某一因素或指标相对于某一事物的重要程度。而Shopee权重…

由 Base64 展开的知识探讨

前言 在我们的业务应用中越来越多的应用到编码内容,例如在 API 中,给到后端的 SQL 都是通过 Base64 加密的数据等等。 能够发现我们的代码中,使用的 window 对象上的 btoa 方法实现的 Base64 编码,那 btoa 具体是如何实现的呢&a…

第二篇|研究数据哪里来——建筑业

数据是研究和产业发展的重要基石,然而无论是学者、企业还是研究机构往往都面临着“找数据难”的局面。本期将分享一些查找建筑相关的数据及资料的渠道。希望可以帮大家解决这一难题,有用求收藏求收藏求收藏~ 1.政府机构 可以查找国家、地方政府的建筑行…

应用在室外LED电子显示屏中的MiniLED背光

LED电子显示屏是一种通过控制半导体发光二极管的显示方式,是由几万–几十万个半导体发光二极管像素点均匀排列组成。它利用不同的材料可以制造不同色彩的LED像素点,以显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。 LED显示屏…

安防监控视频汇聚EasyCVR平台的FLV视频流在VLC中无法播放的原因排查

众所周知,TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上,视频监控…

“中国软件杯”飞桨赛道晋级决赛现场名单公布

“中国软件杯”大学生软件设计大赛是由国家工业和信息化部、教育部、江苏省人民政府共同主办,是全国软件行业规格最高、最具影响力的国家级一类赛事,为《全国普通高校竞赛排行榜》榜单内赛事。今年,组委会联合百度飞桨共同设立了“智能系统设…

基于CAS的单点登录实践之路

前言 上个月我负责的系统SSO升级,对接京东ERP系统,这也让我想起了之前我做过一个单点登录的项目。想来单点登录有很多实现方案,不过最主流的还是基于CAS的方案,所以我也就分享一下我的CAS实践之路。 什么是单点登录 单点登录的…

Java Random 类的使用

Java中的Random类是用来生成伪随机数的工具类。它可以用来生成随机的整数、浮点数和布尔值。以下是Java Random类的一些常见用法: 创建Random对象: Random random new Random();生成随机整数: int randomNumber random.nextInt(); // 生…

新手也能看懂:如何理解 K8s 声明式 API ?

我们知道 Kubernetes(以下简称“K8s”)中各种资源对象的数据是通过 K8s 的 API 进行提交并持久化到存储 etcd 中的(称为K8s对象),K8s 对象是使用 K8s 的接口,kubelet 客户端通过操作这些对象来使用K8s能力。…

uniapp使用空格占位符无效

uniapp文档&#xff1a; 错误写法&#xff1a; <text>筛 选</text> 正确写法&#xff1a; <text decode>{{ 筛 选 }}</text> //要加decode属性&#xff0c;且内容必须包裹在{{}}

无人驾驶实战-第十课(决策规划)

在七月算法上报了《无人驾驶实战》课程&#xff0c;老师讲的真好。好记性不如烂笔头&#xff0c;记录一下学习内容。 课程入口&#xff0c;感兴趣的也可以跟着学一下。 ————————————————————————————————————————— Planning是目前无…

openGauss学习笔记-32 openGauss 高级数据管理-批处理模式

文章目录 openGauss学习笔记-32 openGauss 高级数据管理-批处理模式32.1 语法格式32.2 参数说明32.3 示例 openGauss学习笔记-32 openGauss 高级数据管理-批处理模式 openGauss支持从文本文件执行SQL语句。openGauss提供了gsql工具实现SQL语句的批量处理。 以下场景建议使用批…

(JS逆向专栏十二)某乐平台网站登入RSA

声明: 本文章中所有内容仅供学习交流&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 名称:当乐 目标:登入参数 加密类型:RSA 目标网址:https://oauth.d.cn/auth/goLogin…

【前端 | CSS】5种经典布局

页面布局是样式开发的第一步&#xff0c;也是 CSS 最重要的功能之一。 常用的页面布局&#xff0c;其实就那么几个。下面我会介绍5个经典布局&#xff0c;只要掌握了它们&#xff0c;就能应对绝大多数常规页面。 这几个布局都是自适应的&#xff0c;自动适配桌面设备和移动设备…

Linux:管道命令与文本处理三剑客(grep、sed、awk)

1 管道命令&#xff08;pipe&#xff09;介绍 众所周知&#xff0c;bash命令执行的时候会输出信息&#xff0c;但有时这些信息必须要经过几次处理之后才能得到我们想要的格式&#xff0c;此时应该如何处置&#xff1f;这就牵涉到 管道命令(pipe) 了。管道命令使用的是|这个界定…

GaussDB数据库SQL系列-表连接(JOIN)

目录 一、前言 二、GaussDB JOIN 1、LEFT JOIN 2、LEFT JOIN EXCLUDING INNER JOIN 3、RIGHT JOIN 4、LEFT JOIN EXCLUDING INNER JOIN 5、INNER JOIN 6、FULL OUTER JOIN 7、FULL OUTER JOIN EXCLUDING INNER JOIN 三、GaussDB 实验示例 1、初始化实验表 2、LEFT …

苹果正在测试新款Mac mini:搭载M3芯片 配备24GB大内存

据悉苹果目前正在测试新的Mac机型&#xff0c;亮点是采用最新的M3芯片。 据报道&#xff0c;首款搭载M3芯片的设备应该是13英寸的MacBook Pro和重新设计的MacBook Air&#xff0c;Mac mini机型并不在名单上。 M3和M2同样拥有最多8个核心&#xff0c;分别为4个性能核和4个能效核…

FPGA运算单元可以支援高运算力浮点

随着机器学习(Machine Learning)领域越来越多地使用现场可编程闸阵列(FPGA)来加速推论(inference)&#xff0c;传统FPGA只支援定点运算的瓶颈日益突显。为了解决这一困境&#xff0c;Achronix设计机器学习处理(Machine Learning Processing&#xff1b;MLP)单元&#xff0c;不仅…

GreatSQL从单机到MGR扩展纪实

一、前言 原有的业务系统跑在MySQL主从架构中&#xff0c;高可用通过脚本完成&#xff0c;但存在切换数据丢失和切换不及时风险&#xff0c;调研了高可用更稳定的MGR后&#xff0c;准备入手一试。本篇文章主要记录GreatSQL从单机扩展到MGR的详细过程&#xff0c;遇到的问题及解…

【PCIE】AER和DPC解释

AER&#xff08;Advanced Error Reporting&#xff09;和 DPC&#xff08;Downstream Port Containment&#xff09;是PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;总线规范中定义的两种不同的错误处理机制&#xff0c;它们在PCIe架构中有一定的关联…