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

2023-11-16

目录

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
Flash 64K x 8bit
SRAM  20K x 8bit
GPIO  37个GPIO,分别为PA0-PA15、PBO-PB15、PC13-PC15、PDO-PD1
ADC 2个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.推挽输出与开漏输出

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32开发——简介、开发环境(Keil5、CubeMX)、HAL库 的相关文章

随机推荐

  • ESP32-S2应用开发——USB通信(CDC类)

    ESP32S2应用开发 USB通信 CDC类 目录 ESP32S2应用开发 USB通信 CDC类 前言 1 硬件介绍 1 1 硬件连接 2 软件开发 2 1 安装开发板 2 2 安装库 2 3 运行示例代码 2 4 USB传输速度测试 结束
  • task01

    问题1 天池赛官网下载到的5个数据文件 其中了解到有一份是训练数据集 但其他4份就不是很清楚 第一次接触这种类型的还是有点懵的 拿到数据 几份数据之间都有什么关系 具体我该怎么使用每一份文件 如何处理数据 然后弄成什么样的数据形式喂入模型
  • kafka java 性能测试_kafka集群部署以及java客户端测试

    本文主要讲述本人的集群部署kafka过程以及遇到的问题 其中 kafka版本为 kafka 2 10 zookeeper版本为 zookeeper 3 4 8 jdk 8u101 linux x64一 kafka以及zookeeper安装以
  • Eclipse IDE各个版本没有什么区别就是插件库不一样

    1 Eclipse IDE for Java Developers 该版本适合Java开发者 集成CVS Git XML编辑器 Mylyn Maven integration和WindowBuilder等插件 2 Eclipse IDE f
  • Html页面内引入抽取出来的Html,js,css示例

    在写纯Html网站的时候 每个页面的头部菜单 js css和底部说明都是同样的 有的时候你要改 就要一个一个的去改 通过下面方法将这些相同的抽取出来 方便后期维护 希望能帮到你 在applyBusiness html页面引入公共页头head
  • 贝叶斯优化Bayesian Optimization(学习笔记)

    贝叶斯优化应用背景 如果待解决问题为中输入 x x x 输出 f x f x f x 具有如
  • C语言中的.c 和.h 文件区别

    本文的大部分内容来自网上 经过自己的理解和总结整理而来 希望对和自己有同样的困惑的人予以参考 感谢那些网上的大牛们 是你们的无私 让我学到了很多的东西 予人玫瑰 手留余香 文章转载请注明出处 首先我们先看一下这个例子 由于我也不知道到底那个
  • 微信小程序做店铺收费吗?【微信小程序店铺】

    很多商家企业现在都已经有自己的微信小程序店铺了 还没有的微信小程序店铺的商家企业也是计划开通自己的微信小程序店铺 那么对于他们来说 除了要知道怎么做微信小程序店铺 还需要了解微信小程序做店铺收费吗这个问题 那么下面就对微信小程序做店铺收费吗
  • Jmeter —— jmeter接口自动化测试操作流程

    在企业使用jmeter开展实际的接口自动化测试工具 建议按如下操作流程 可以使整个接口测试过程更规范 更有效 接口自动化的流程 1 获取到接口文档 swagger word excel 2 熟悉接口文档然后设计测试用例 一般都是先在exce
  • Android PowerSupply (五)ChargeIC SGM41511 IC简介

    目录 Android PowerSupply 一 总概 Android PowerSupply 二 power supply core Android PowerSupply 三 power supply sys Android Power
  • JAVA进阶(三)——注解和反射

    文章目录 三 注解和反射 3 1 注解的概念 什么是注解 Annotation Annotation的作用 Annotation的格式 Annotation在哪里使用 3 2 内置注解 Override 定义在java lang Overr
  • curl无返回值

    问题 输入curl xxx xxx xxx xxx dddd service 按下回车后无任何返回值 解决 在命令的最后加上 如上述命令改为 curl xxx xxx xxx xxx dddd service 后成功返回html
  • matlab练习程序(广度优先搜索BFS、深度优先搜索DFS)

    如此经典的算法竟一直没有单独的实现过 真是遗憾啊 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了 深度优先搜索倒是没用过 这次单独的将两个算法实现出来 因为算法本身和图像没什么关系 所以更纯粹些 广
  • range函数参数较大大时占据大量内存

    20200806 引言 编写一个编写的时候 发现内存逐步占用越来越大 脚本的目的是利用循环生成大量的数值 然后利用生分成的数值来执行某个函数 大致上的函数伪码就是下面这个 def some compute x pass max value
  • 基于 Android NDK 的学习之旅-----数据传输一(基本数据类型和数组传输)(附源码)

    之前的一些文章都有涉及到上层和中间层的数据传输 简单来说 也就是参数和返回值的使用 因为中间层要做的最多的也就是数据传输与转换 下面来介绍下这方面的知识 数据传输可分为 基本数据类型传输 和 引用数据类型的传输 因为数组传输也比较特别 其实
  • 神经网络基础-GRU和LSTM

    在深度学习的路上 从头开始了解一下各项技术 本人是DL小白 连续记录我自己看的一些东西 大家可以互相交流 本文参考 本文参考吴恩达老师的Coursera深度学习课程 很棒的课 推荐 本文默认你已经大致了解深度学习的简单概念 如果需要更简单的
  • Thread UncaughtExceptionHandler

    做web开发的时候 一般都是在Controller统一捕捉异常 在业务逻辑里抛出自定义的异常 如果代码中使用了多线程 线程中出错 或者你在线程中抛出一个异常 在最外层Controller里是无法捕捉到线程中的异常的 Thread类中定义了一
  • 用 Python 基于 pyecharts 对微信好友(性别,地域)进行分析,并数据可视化

    代码我是在anaconda的jupyter notebook里编写运行的 需要安装的库 在cmd里安装 pip install wxpy pip nstall pyecharts wxpy 在 itchat 的基础上 通过大量接口优化提升了
  • 机器学习面试问题总结

    机器学习算法面试问题 美团AI算法 1 xgboost原理 怎么防过拟合 2 gbdt推导 3 boosting和bagging在不同情况下的选用 4 DBSCAN原理和算法伪代码 与kmeans OPTICS区别 5 LSTM原理 与GR
  • STM32开发——简介、开发环境(Keil5、CubeMX)、HAL库

    目录 1 简介 初识STM32 2 开发环境 2 1使用Keil5 2 2使用STM32CubeMX 3 标准库与HAL库区别 4 推挽输出与开漏输出 1 简介 初识STM32 什么是单片机 单片机 Single Chip Microcom