STM32开发——简介、开发环境(Keil5、CubeMX)、HAL库

news2024/11/24 13:59:48

目录

1.简介-初识STM32

2.开发环境

2.1使用Keil5

 2.2使用STM32CubeMX 

3.标准库与HAL库区别

4.推挽输出与开漏输出


1.简介-初识STM32

什么是单片机?

  • 单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能力的中央处
    理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功
    能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成
    到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

STM系列单片机命名规则

  • ST -- 意法半导体
  • M -- Microelectronics 微电子
  • 32 -- 总线宽度

项目 介绍
内核 Cortex-M3
Flash64K x 8bit
SRAM 20K x 8bit
GPIO 37个GPIO,分别为PA0-PA15、PBO-PB15、PC13-PC15、PDO-PD1
ADC2个12bit ADC合计12路通道,外部通道: PAO到PA7+PBO到PB1内部通道: 温度传感器通道ADC Channel 16和内部参考电压通道ADC Channel 17
定时器/计数器4个16bit定时器/计数器,分别为TIM1、TIM2、TIM3、TIM4TM1带死区插入,常用于产生PWM控制电机
看门狗定时器2个看门狗定时器 (独立看门狗IWDG、窗口看门狗WWDG)
滴答定时器1个24bit向下计数的滴答定时器systick
工作电压、温度2V —3.6V、-40°—C85°C
通信串口2 * IIC,2 * SPI,3 * USART,1 * CAN
系统时钟内部8MHz时钟HSI最高可倍频到64MHZ,外部8MHZ时钟HSE最高可倍频到72MHZ

2.开发环境

2.1使用Keil5

1.安装MDK

地址选择

2.破戒

3.安装芯片对应的固件包——F1固件包

双击固件包直接安装即可

 4.创建STM32F1模板工程

在魔术棒中的C/C++需要添加文件头文件路径 

 5.接线

烧录工具有很多种,比如:串口、J-Link、ST-Link、U-Link 等等,本教程使用 ST-Link。

安装驱动

  • 官网下载(慢)https://www.st.com/en/development-tools/stsw-link009.html
  • 资料包

接线

 6.编译及下载

 后两个编译生成hex文件

LOAD就是下载程序到开发板

需要程序运行,需要按一下开发班的复位按钮。

F12:查看对应函数的具体信息

 2.2使用STM32CubeMX 

作用:通过界面的方式,快速生成工程文件。

缺点:只能对IO口进行操作,不能生成复杂代码。

下载:官网(慢)https://www.st.com/zh/development-tools/stm32cubemx.html#overview

安装:一路下一步,建议不要安装在C盘

配置:更新固件包位置(比较大,默认在C盘,可以更改到其它盘)

  • help ---> update settings --> Firmware Repository

步骤:

1. 点击「ACCESS TO MCU SELECTOR」;
2. 左上角搜索对应的芯片,并在右侧双击对应的芯片;

3. 点击芯片对应的引脚,并进行配置;
4. 配置工程名称及位置:

 1. 按下图配置 Coder Generator :

 6. 点击右上角 generate code :

 7. 点击 Open Project 即可调用 Keil5 打开自动生成的工程文件。

3.标准库与HAL库区别

1. 寄存器

  • 寄存器众多,需要经常翻阅芯片手册,费时费力;
  • 更大灵活性,可以随心所欲达到自己的目的;
  • 深入理解单片机的运行原理,知其然更知其所以然。

2. 标准库

  • 将寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用
  • 每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的;
  • 配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能;
  • 大大降低单片机开发难度,但是在不同芯片间不方便移植。

3. HAL库

  • ST公司目前主力推的开发方式,新的芯片已经不再提供标准库;
  • 为了实现在不同芯片之间移植代码;
  • 为了兼容所有芯片,导致代码量庞大,执行效率低下。

4.推挽输出与开漏输出

推挽输出: 可以真正能真正的输出高电平和低电平。
开漏输出: 开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完
成对外驱动。

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

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

相关文章

kafka部分面试常见问题及其解答(接上)

16. kafka创建Topic时如何将分区分配给各Broker 副本因子不能大于 Broker 的个数;第1个分区(partition_0)的第1个副本放置位置是随机从brokerList选择的;其他分区的第一个副本放置位置相对于partition_0依次往后移。 如果我们有5…

vue 3 第三十二章:状态管理(Pinia状态持久化)

Pinia 的状态持久化 在实际开发中,我们通常需要对状态进行持久化或缓存,以便在应用程序重新加载或离线时仍然能够访问数据。在 Pinia 中,我们可以使用插件来实现状态的持久化和数据缓存。 Pinia 提供了一个名为pinia-plugin-persist的插件&…

Linux - 文件操作和系统接口

​​​​​​​ 感谢各位 点赞 收藏 评论 三连支持 本文章收录于专栏【Linux系统编程】 ❀希望能对大家有所帮助❀ 本文章由 风君子吖 原创 ​​​​​​​ ​​​​​​​ ​​​​​​​ ​ 前言 对于文件操作,不知大家是否有过接…

永恒之黑漏洞复现

一、实验环境搭建 系统镜像: ed2k://|file|cn_windows_10_consumer_editions_version_1903_x64_dvd_8f05241d.iso|4905476096|F28FDC23DA34D55BA466BFD6E91DD311|/ 建议使用迅雷下载,安装版本选win10专业版 安装完后记得一定要关闭defender,防火墙&…

配置主机加入已有 tinc 集群简明过程

文章目录 Cent OS服务器安装tinc配置文件过程中使用到的一些Linux命令小记 启动tinc开放端口 Windows主机参考资料 本文的主要内容是如何将主机加入已有的 tinc 集群。 Cent OS服务器 安装tinc yum install tinc如果不先 su 到 root 账户的话,可能会无法安装。 因…

Python模块os 操作系统

目录 1. 系统类 --------------------- 解释器 --------------------- system 执行系统命令 wait 等待任意子进程 waitpid 等待指定的子进程 kill 指定杀死进程 abort 立即中止解释器 pipe 管道操作 --------------------- 随机字符 --------------------- urandom …

KMeans+DBSCAN密度聚类+层次聚类的使用(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

数据结构之栈、队列——算法与数据结构入门笔记(四)

本文是算法与数据结构的学习笔记第四篇,将持续更新,欢迎小伙伴们阅读学习 。有不懂的或错误的地方,欢迎交流 栈 栈是一种线性数据结构,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶 (Top&…

虚幻5-编辑器扩展开发Editor-Slate的TabManager结构如下

目录 Editor-Slate WorkSpaceMenu(Slate相关类) Editor-Tab-界面刷新 Editor-Slate 基本上,地球人都知道(我不是地球人)虚幻引擎的Editor界面(自定义)通过Slate管理 Slate的入口是方法::Co…

检测到“_CRT_STDIO_ISO_WIDE_SPECIFIERS”的不匹配项

libboost_thread-vc142-mt-x64-1_82.lib(thread.obj) : error LNK2038: 检测到“_CRT_STDIO_ISO_WIDE_SPECIFIERS”的不匹配项: 值“0”不匹配值“1”(AcadStr.obj 中) 1> 正在创建库 x64\Release\ArxDbg.lib 和对象 x64\Release\ArxDbg.exp : fatal error LNK1319: 检测到 …

这AI二维码也太酷炫了!谷歌生成式AI学习路径;媒体的AI炒作套路报告;使用GPT-4自动化制作短视频 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 新鲜出炉!2023人工智能10大分类排行榜 这是根据2023年6月德本咨询、eNet研究院和互联网周刊联调的人工智能排行榜&#xf…

smardaten简直是无代码软件开发的天花板

目录 前言 一、smardaten简单介绍 二、基于smardaten创建应用 1、创建一个炫酷的大屏 2、创建一个web端和移动端共存的应用 三、smardaten功能特性和优势 1、操作简单,快速上手 2、圆桌开发,效率倍升 3、图形编排,拖拽生效 4、低无代…

ARM---驱动开发

目录 1.驱动大纲: 2.单片机开发属于嵌入式开发吗? 3.RAM裸机代码和驱动有什么区别? 4.Linux系统的组成 5.宏内核、微内核 6.驱动移植 1.驱动大纲: (1)内核模块 (2)字符设备驱…

docker创建ubuntu 22.04

1、拉取镜像 sudo docker pull ubuntu:22.04 2、启动ubuntu22.04,这里映射物理机23端口对应docker22端口用于远程连接 sudo docker run -it -p 23:22 1f6ddc1b2547 /bin/bash 3、进入容器后配置远程: apt update apt upgrade apt install vim ap…

springboot+vue+java在线教育课程教学辅助系统

本文介绍了在线教育系统的开发全过程。通过分析在线教育系统管理的不足,创建了一个计算机管理在线教育系统的方案。文章介绍了在线教育系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。课程辅助教学&a…

智慧PG集成开发平台pgting-cli发布了

介绍 两周前我们发布了智能页面搭建平台 —— 智慧PG(pgting),深受用户青睐,很多用户尝试了在线开发组件。为了方便用户定制开发组件和组件共享,智慧PG设计之初就考虑了组件定制开发问题,为此,我们设计和研发了智慧PG…

Spring Catch

一、Spring Cache整合服务 1.pom.xml <!--spring catch--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>2.application.properties #开启缓存空值&am…

canvas图片旋转,图片base64编码,保存图片

在一些业务场景中&#xff0c;常常需要前端对图片进行操作&#xff0c;这样可以将部分的性能压力转移到前端设备&#xff0c;有利于减小服务器压力&#xff0c;下面讲解前端怎么操作图片。 首先&#xff0c;对图片的操作都是依赖于canvas画布&#xff0c;这里对canvas标签不再赘…

华为OD机试题【字符统计】【2023 B卷 100分】

文章目录 &#x1f3af; 前言&#x1f3af; 题目描述&#x1f3af; 解题思路&#x1f4d9; Python代码实现&#x1f4d7; Java代码实现&#x1f4d8; C语言代码实现 &#x1f3af; 前言 &#x1f3c6; 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最…

LVGL学习(3):页面切换原理和页面管理实现

在LVGL中&#xff0c;大多情况下是有多个页面的&#xff0c;一般来说页面的切换有两种情况&#xff1a; 删除当前的页面&#xff0c;创建新页面加载保留当前的页面&#xff0c;创建新页面加载 我们来分析一下这两种情况&#xff0c;比如页面1有一个列表框&#xff0c;有三个选…