首页 > 其他分享 >STM32--STM32 微控制器详解

STM32--STM32 微控制器详解

时间:2024-10-31 22:45:15浏览次数:3  
标签:HAL -- void STM32 InitStruct GPIO 微控制器

STM32是STMicroelectronics(意法半导体)推出的一系列基于ARM Cortex微控制器家族的产品。它们广泛应用于嵌入式系统领域,因其丰富的特性、低功耗和合理的价格而受到青睐。

STM32的特点

  1. 处理器核心:STM32微控制器基于不同的ARM Cortex核心,如Cortex-M0、M3、M4、M7等。
  2. 存储:包括闪存(程序存储)、SRAM(数据存储)以及某些型号的外部内存接口。
  3. I/O端口:提供了丰富的GPIO端口,支持数字I/O功能。
  4. 通信接口:包括USART/UART、SPI、I2C、USB、CAN、Ethernet等。
  5. 模拟接口:ADC(模拟-数字转换器)、DAC(数字-模拟转换器)。
  6. 定时器和PWM:用于定时/计数任务和脉宽调制输出。
  7. 电源管理:多种低功耗模式,用于节能。
  8. 其他特性:如硬件加速器、触摸感测、LCD控制器等,这取决于具体的STM32型号。

STM32的硬件架构

STM32的硬件架构包括处理器核心、存储器、各种外设和总线系统。STM32定义了两种总线:AHB(Advanced High-performance Bus)和APB(Advanced Peripheral Bus)。

  • AHB:高速总线,主要负责嵌入式处理器、DMA控制器、Memory等的接口。
  • APB:低速总线,主要负责外设接口,如GPIO、UART、DMA、ADC等。

STM32与51微控制器的区别

与51微控制器相比,STM32具有更先进的内核架构、更多的外设和更高的性能。51微控制器在某些功能如AD和EEPROM上需要扩展,而STM32则内置了这些功能。

STM32与ESP32的比较

STM32和ESP32都是流行的微控制器,但它们有不同的应用领域。STM32更适合需要数字信号处理(DSP)的应用,而ESP32则以其Wi-Fi功能而闻名。

STM32的低功耗模式

STM32具有多种低功耗模式,包括睡眠模式、停止模式和待机模式,适用于电池供电的应用。

STM32的编程和应用

STM32使用C语言进行编程,ST提供了丰富的固件库,以加速开发过程。STM32广泛应用于工业控制、医疗设备、消费电子等领域。

示例代码

以下是一个简单的STM32程序示例,它初始化一个GPIO引脚,并在该引脚上闪烁一个LED。

#include "stm32f1xx_hal.h"

void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();

    while (1) {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
        HAL_Delay(500);
    }
}

static void MX_GPIO_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

void SystemClock_Config(void) {
    // 时钟配置代码
}

这段代码首先初始化HAL库和GPIO,然后在主循环中不断切换PA5引脚的状态,实现LED的闪烁。

通过上述介绍和示例代码,我们可以看到STM32微控制器的强大功能和灵活性,以及如何使用它们进行嵌入式系统开发。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

标签:HAL,--,void,STM32,InitStruct,GPIO,微控制器
From: https://blog.csdn.net/weixin_66608063/article/details/143419627

相关文章

  • 树莓派5安装ollama+open-webui
    新购置了个PI5,就想着折腾些什么。除了给它装codesys之外,想到(尤其是看到官配的冷却风扇)是不是能跑个AI什么的。捜了一下,除了TensorFlowLite、PyTorchMobile还有做视觉的OPENCV和YOLO。除此之外,一个熟悉的词汇又冒了出来。ollama。记得有段时间看到很多短视频推送,想着就找下资料看......
  • STM32的USB接口介绍
    STM32微控制器系列提供了强大的USB功能,支持USB设备和主机模式。本文将详细介绍STM32的USB接口,包括其主要特征、寄存器和缓存映射、时钟要求以及如何通过代码实现USB通信。一、USB简介STM32的USB外设实现了USB2.0全速总线和APB总线间的接口。它支持USB挂起/恢复操作,可以停......
  • 每日python小白:如何打印九九乘法表?
    一、代码展示以防各位心急,咱先搬上来代码:代码一:初级版foriinrange(1,10):forjinrange(1,10):print("%d*%d=%d"%(i,j,i*j),end="")print()效果:代码二:完整版foriinrange(1,10):forjinrange(1,i+1):print("%d*%d=%d"......
  • 笔试真题——机器人拧魔方模拟
    说明:根据遗留的记忆写出来了此篇文章,可能与原文解释有部分出入,但总体思路一致。题目说明:YYYYRRRRWWWWOOOOGGGGBBBBUUL'第一行为输入为对应F,R,B,L,U,D面的元素颜色第二行输入为翻转的标识符标识符有:F、F'、R、R'、B、B'、L、L'、U、U'、D、D'。分别为对应明的顺时针......
  • 关于visual stdio 2022代码在win11上运行异常缓慢的解决方案分享
        此篇博客记录笔者解决visualstdio2022运行c语言异常缓慢的解决方案。    起初我上网查资料得知可能是我的模块加载太多了,但是在禁用了额外的模块依然异常缓慢,我就继续查找资料,于是发现另一篇博客反应了和我一样的问题,他的解决方案是关闭联想自带的安全......
  • [极客大挑战 2019]EasySQL
    题目链接:https://buuoj.cn/challenges#[极客大挑战2019]EasySQL。打开后,页面如下所示:可以看到,只有一个登录框,没有其他的内容,一般这种情况,应当先考虑SQL注入。在密码框中直接插入万能密码:'or1=1;#。成功获取flag。知其然,知其所以然。一些常见的登陆功能的后端实现......
  • 跟着阿灵学前端——CSS 基础 (2)
    1.CSS长度单位px:像素em:相对元素font-size的倍数rem:相对根字体大小的倍数,html标签就是根。%:相对父元素计算的百分比。CSS中设置长度,必须加单位,否则样式无效。2.元素的显示模式块元素(block)又称:块级元素特点:在页面中独占一行,不会与任何元素共用一行,是从上到......
  • 大模型算法面试题总结
    更多面试题总结,请移步至​https://i.afbcs.cn/naPbNY​1.什么是大型语言模型(LLMs)以及它们的工作原理是什么?大型语言模型(LLMs)是设计用来理解、处理和生成类似人类文本的高级人工智能系统。例子包括GPT(生成预训练变换器)、BERT(来自变换器的双向编码器表示)、Claude和Llama。这些......
  • flask模板
    模板基础使用block块操作父模板挖坑,子模板填坑{%blockxxx%}{%endblock%extends继承{%extends'xxx'%}继承后保留块中的内容{{super()}}include包含,将其他htm1包含进来{%include'xxx'%}宏的使用 宏定义:Python函数#}{%macroperson(name,ag......
  • 大型xlsx文件内容快速读取
    openpyxl的性能还是不够用,我经常会导出很多的xlsx文件获取里面的数据来分析操作。下面的代码可以直接将xlsx的文本内容直接转为二维列表返回使用:def获取数据形成二维列表_原封不动版_V2(path:str)->list:zip_file=zipfile.ZipFile(path)monitor_typeName=os.path......