7.stm32 江协科技笔记2

  1. 开发方式:

基于寄存器:用程序直接配置寄存器,最底层,程序直接读写芯片内部的寄存器来控制硬件。这种方式代码体积小、执行效率高,但开发难度大,需要熟读芯片手册,且代码可移植性差。

江协科技使用:基于标准库(库函数):将寄存器操作封装成易于调用的函数。开发者无需直接操作寄存器位,只需调用如GPIO_Init等库函数即可完成配置,这提高了代码的可读性和可维护性。不过,该库已停止更新,主要适用于F1、F4等旧系列芯片。

基于HAL库:这是ST公司目前主推的开发方式,配合STM32CubeMX图形化工具使用。它将底层寄存器细节完全隐藏,提供统一的API接口。开发者可以通过图形界面配置芯片外设,提升了开发效率,且代码跨系列兼容性好。但这种高度封装也带来了代码多和效率低的问题。

2.启动文件:

  • startup_stm32f10x_md.s :这是启动文件,采用汇编语言编写,负责系统上电或复位时的初始化工作,包括设置堆栈指针、构建中断向量表、调用SystemInit()函数配置系统时钟,并最终跳转到main函数。它是程序执行的入口点,确保硬件环境就绪。

  • core_cm3.c 与 core_cm3.h :这两个文件属于**(Cortex微控制器软件接口标准)**的一部分,用于访问ARM Cortex-M3内核的寄存器和功能。core_cm3.h提供内核寄存器的定义和宏,core_cm3.c则包含内核底层函数的实现,通常在标准库中预编译为库文件。

  • stm32f10x.h :这是外设寄存器定义头文件,由ST公司提供,包含了STM32F10x系列所有外设的寄存器地址、位定义和结构体映射,是开发者直接操作硬件寄存器的基础。

  • system_stm32f10x.c 与 system_stm32f10x.h :这两个文件负责系统时钟配置,用于初始化系统时钟、PLL等,确保CPU和外设以正确的频率运行,文件.h提供函数声明和宏定义。

这些文件共同协作,完成从硬件初始化到系统时钟配置的全过程,为上层应用代码提供稳定可靠的运行环境。尤其在使用标准库开发时,必须正确包含和配置。

1.首先,用方式一点灯:

先使能gpio_c 时钟, 在RCC中。

再进行引脚设置:GPIOx_CRH和GPIOx_CRL共同管理一个GPIO端口C部分的16个引脚

每个引脚的配置需要4位二进制位,其中2位用于设置模式(如输入、输出、输出速度,另外2位用于设置配置(如推挽、开漏、上拉下拉、复用功能等

因为单片机32位,所以寄存器也是32位宽,"32位"主要对应地址总线的宽度

然后配置GPIO的具体输出:寄存器如下

ODR13口 低电平点亮

2.使用库函数

思路和上面一样,只是换成库函数了

总结:

二. GPIO

相关推荐
V哥AI增长5 小时前
小红书笔记在生成式AI引擎中的可见性机制解析:从抓取原理到GEO工程化实践
大数据·人工智能·笔记
lhbweilai8 小时前
STM32 ADC模拟数字转换(hal库)
stm32·单片机·嵌入式硬件
蓝速科技9 小时前
蓝速科技 AI 数字人一体机:大厂算法与实体落地的务实权衡评测
人工智能·科技
Hotchip_MEMS10 小时前
当雾化器遇上MEMS:一场从交互到制造的全链路效率提升
人工智能·笔记·物联网·电脑·制造
是上好佳佳佳呀10 小时前
【深度学习|Day02】PyTorch 深度学习笔记(下):张量运算与自动微分
pytorch·笔记·深度学习
小僧景贤10 小时前
STM32 工程文件深度解析(Keil‑MDK + STM32CubeIDE)
stm32·单片机·stm32cubeide
益莱储中国11 小时前
PCIe 验证,是否正在拖慢您的项目进度?
科技
国科安芯11 小时前
低轨卫星姿态与轨道控制系统中高可靠MCU的选型研究——基于AS32S601的抗辐照性能试验数据分析
分布式·科技·单片机·嵌入式硬件·系统架构
IT古董11 小时前
【MES学习笔记系列】05 - MES 数据库设计
笔记·学习·mes
不瘦80斤不改名12 小时前
05-vibe-coding-向agentic-engineering演进
人工智能·笔记·python·prompt