STM32 G431

这篇具有很好参考价值的文章主要介绍了STM32 G431。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言


一、芯片简介

stm32g431,STM32,stm32,嵌入式硬件,单片机

1.家族
STM32:32代表32位MCU,有32根地址线,可以寻找4GB的地址

STC15单片机是8位CPU,地址以16进制表示:0x_ _ ;
STM32: 0x_ _ _ _ _ _ _ _

容量为 2^32 = 4,294,967,296 ≈ 4×10^9 (其中 1GB = 10^9)

2.产品类别
G: 支持DSP和FPU指令的可适用信号应用

像正点原子的F4,F:基础型,通用型

3.特点功能
103 : STM32基础型
407:高性能,带DSP和FPU
431: 未知

4.引脚数
R : 64位引脚

5.闪存容量
B: 128K

6.封装
T:QFP封装

二、Cortex-M内核

整个芯片的组成
stm32g431,STM32,stm32,嵌入式硬件,单片机

芯片由两大部分组成的:Cortex-M内核(ARM公司设计的部分) + 外设资源(芯片制造商设计的部分)

stm32g431,STM32,stm32,嵌入式硬件,单片机
Cortex-M家族有一系列的处理器,STM32F103内部使用的是Cortex-M3内核,STM32G431内部使用的是Cortex-M4内核,M4比M3多了DSP信号处理和FPU浮点运算单元

M3内核架构简化视图
stm32g431,STM32,stm32,嵌入式硬件,单片机
NVIC:向量中断控制器,负责中断控制以及中断处理事务

取指令单元:取指执行,通过总线将程序从程序存储器(128K闪存)取出,交给解码器

解码器:指令解码

ALU: 算术逻辑单元, 是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算

自带追踪接口和调试系统

存储逻辑运算的结果放在寄存器组中
stm32g431,STM32,stm32,嵌入式硬件,单片机
想要深入学习寄存器组的作用,参考这一篇:M3/M4内核基础

三、芯片内部结构

1.外设资源

STM32G4系列控制器参考手册:查看开发板外设的资源和资源的数量
stm32g431,STM32,stm32,嵌入式硬件,单片机
stm32g431,STM32,stm32,嵌入式硬件,单片机

stm32g431,STM32,stm32,嵌入式硬件,单片机
stm32g431,STM32,stm32,嵌入式硬件,单片机

2.内部模块框图

STM32G431RB数据手册:查看外设所对应的时钟总线
stm32g431,STM32,stm32,嵌入式硬件,单片机

GPIO(A-G) : 挂载在AHB2时钟总线上
定时器1,8,15,16,17 : APB2
定时器2,3,4,I2C: APB1
AHB1分为 APB1和APB2时钟总线
stm32g431,STM32,stm32,嵌入式硬件,单片机

3.时钟树

STM32G4系列微控制器参考手册: 查看时钟树
stm32g431,STM32,stm32,嵌入式硬件,单片机
时钟树:
stm32g431,STM32,stm32,嵌入式硬件,单片机
STM32的时钟源主要有: 内部时钟、外部时钟、锁相环倍频输出时钟。内部时钟、外部时钟又分为告诉高速、低速时钟

系统时钟有三种来源:高速外部时钟(4-48Mhz),高速内部时钟(16 Mhz), PLL锁相环倍频输出时钟

PLL锁相环时钟来源有两种HSE和HSI,经过倍频输出
stm32g431,STM32,stm32,嵌入式硬件,单片机
OSC_IN 和OSC_OUT对应PF0,PF1时钟输入引脚

配置时钟:

1.在CubeMX中配置RCC选择外部时钟HSE,对应引脚起作用
stm32g431,STM32,stm32,嵌入式硬件,单片机
2.倍频设置
stm32g431,STM32,stm32,嵌入式硬件,单片机
将外部时钟设置为24Mhz,经过三分频变为8Mhz, 经过锁相环乘20除以2,变为80Mhz, 将系统时钟来源选择PLLCLK , 系统时钟就是80Mhz, 再一分频得到AHB总线时钟,最终得到外设时钟。

对应代码文章来源地址https://www.toymoban.com/news/detail-773199.html

void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/** Configure the main internal regulator output voltage
/

HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
/* Initializes the RCC Oscillators according to the specified parameters

  • in the RCC_OscInitTypeDef structure.
    /
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; // 选择来源
    RCC_OscInitStruct.HSEState = RCC_HSE_ON; // 开启时钟
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    // 倍频设置
    RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV3;
    RCC_OscInitStruct.PLL.PLLN = 20;
    RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
    RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
    RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
    Error_Handler();
    }
    /
    * Initializes the CPU, AHB and APB buses clocks
    */
    // 由系统时钟得到对应总线的时钟
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
}

在STM32G431内部结构中,各个模块都是通过总线相连接。Cortex-M4内核相当于心脏,最高频率可达170MHz,它通过总线AHB进行数据交换,AHB分为AHB1和AHB2,AHB1又分为APB1和APB2
stm32g431,STM32,stm32,嵌入式硬件,单片机

4.存储空间

查看内存映射地址:STM32G4系列微控制器参考手册
stm32g431,STM32,stm32,嵌入式硬件,单片机
内存映射:
stm32g431,STM32,stm32,嵌入式硬件,单片机

内存映射分左、右两侧, 左侧是各个资源地址的大致分化,右侧是对左侧的细化
(1)Flash(闪存)
Flash:程序存储器,存储代码的地方 起始地址:0x0800 0000

从地址 0x0800 0000 到 0x0808 0000 ,( 8 0000 )16进制 = ( 524288 )10进制,Flash memory被分配到的空间有 524KB 大小,远大于它本身的 128KB

(2)RAM
RAM: 随机存储器,用于存储数据 ,起始地址:0x2000 0000

RAM分为:SRAM和DRAM

1.SRAM:静态RAM(S指的static),静态指的不需要刷新电路,数据不会丢失,SRAM速度非常快,是目前读写最快的存储设备

2.DRAM:动态RAM(D指的dynamic),动态指的每隔一段时间就要刷新一次数据,才能保存数据,速度也比SRAM慢,不过它比任何的ROM都要快

(3)外设
外设:APB1、APB2、AHB1、AHB2 起始地址:0x4000 0000

小结:

外设起始地址为 0x4000 0000
SRAM起始地址为 0x2000 0000
Flash起始地址为 0x0800 0000

详细的外设地址(在上一页的下一页)
stm32g431,STM32,stm32,嵌入式硬件,单片机
可以依据蓝色字体查看外设对应寄存器分配地址
stm32g431,STM32,stm32,嵌入式硬件,单片机

四、BOOT启动

STM32上电启动后,程序代码从最底层地址0x0000 0000 开始运行
stm32g431,STM32,stm32,嵌入式硬件,单片机
前面知道代码存储在 Flash地址0x0800 0000 中,如何让 0x0000 0000 运行的是 0x0800 0000 中的代码? 存储器地址重映射: 将 0x0800 0000 中的代码映射到 0x0000 0000 中

映射还可以将SRAM, System memory 等地址映射到0X0000 0000处
stm32g431,STM32,stm32,嵌入式硬件,单片机

映射方式的选择由BOOT1,BOOT0决定
stm32g431,STM32,stm32,嵌入式硬件,单片机
STM32G431由于BOOT0接地,所以采用的是从flash启动
stm32g431,STM32,stm32,嵌入式硬件,单片机

所以,单片机程序执行顺序
stm32g431,STM32,stm32,嵌入式硬件,单片机

stm32g431,STM32,stm32,嵌入式硬件,单片机
中断向量表: 嵌套向量中断控制器(Nested Vectored Interrupt Controller),STM32向量中断统一由NVIC管理, NVIC的核心功能:中断优先级分组、中断优先级的配置、读中断请求标志、清除中断请求标志、使能中断、清除中断等,外部中断信号从核外发出,信号最终要传递到NVIC(嵌套向量中断控制器)。NVIC跟内核紧密耦合,它控制着整个芯片中断的相关功能
stm32g431,STM32,stm32,嵌入式硬件,单片机
DCD表示开辟一个字空间,后边的为函数名称,函数入口地址

1.存储堆栈指针位置:先获取堆栈指针位置,告诉CPU,中间变量存储再SRAM中, 从下图可以看到首先获取堆栈指针,然后就跳转到复位中断函数
stm32g431,STM32,stm32,嵌入式硬件,单片机
注:按照目录的排列顺序进行检索,并执行目录中地址所指向的函数

2.复位中断函数入口地址:CPU执行到这里,下一步跳转到复位中断函数
中断复位服务函数

3.复位中断函数:CPU执行到这,先配置时钟,再跳转到主函数
stm32g431,STM32,stm32,嵌入式硬件,单片机
在调用main函数之前先完成了时钟的初始化,再调用main的

4.主函数区域:执行主函数,进入while大循环

5.其他中断函数入口地址:发生中断后,中断位置自动激发,告诉CPU中断入口地址,CPU去执行中断

所以,在启动文件执行的时候,内核和每个外设的中断服务函数的地址都是已经确定好的,地址就存放在中断向量表中,而且在启动文件里面已经写好了中断服务函数,只是这些中断服务函数为空,而且带[weak]弱定义
stm32g431,STM32,stm32,嵌入式硬件,单片机

那么需要在C文件里面重新实现这个中断服务函数,用户写这个中断服务函数的时候,函数名必须跟启动文件里面写的中断函数名对应,因为函数名对应的就是中断服务函数的地址,如果中断服务函数名和启动文件的名字不一样,就默认启动文件里面预先写好的空的中断服务函数,而且是一个死循环,程序就会一直卡死在中断服务函数里面

五、库介绍

1.HAL库:ST官方推崇的新编程库;HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。HAL使用了比较大的Flash和SRAM。

2.LL库(Low Layer):ST最近新增的库,与HAL捆绑发布,文档也是和HAL文档在一起的LL库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器。其支持所有外设。使用方法:独立使用,该库完全独立实现,可以完全抛开HAL库,只用LL库编程完成。在使STM32CubeMX生成项目时,直接选LL库即可。如果使用了复杂的外设,例如USB,则会调用HAL库混合使用,和HAL库结合使用。编译后LL库只有HAL库的33%体积。

3.标准固件库:旧版本编程库;HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了

4.寄存器编程:原始底层编程。HAL库和标准库就是ST官方对寄存器编程进行人性化封装后的产物

六、编译过程

stm32g431,STM32,stm32,嵌入式硬件,单片机
stm32g431,STM32,stm32,嵌入式硬件,单片机

1.将 .c 文件编译和 .s 文件汇编,生成 .o 目标文件

2.将 .o 对象文件和内存映射规范文件 通过连接器 生成可执行映像文件。MDK是生成 .axf 可执行文件

3.通过闪存编程器将可执行映像文件下载到芯片的Flash中


总结

提示:这里对文章进行总结:


前言


一、芯片简介

stm32g431,STM32,stm32,嵌入式硬件,单片机

1.家族
STM32:32代表32位MCU,有32根地址线,可以寻找4GB的地址

STC15单片机是8位CPU,地址以16进制表示:0x_ _ ;
STM32: 0x_ _ _ _ _ _ _ _

容量为 2^32 = 4,294,967,296 ≈ 4×10^9 (其中 1GB = 10^9)

2.产品类别
G: 支持DSP和FPU指令的可适用信号应用

像正点原子的F4,F:基础型,通用型

3.特点功能
103 : STM32基础型
407:高性能,带DSP和FPU
431: 未知

4.引脚数
R : 64位引脚

5.闪存容量
B: 128K

6.封装
T:QFP封装

二、Cortex-M内核

整个芯片的组成
stm32g431,STM32,stm32,嵌入式硬件,单片机

芯片由两大部分组成的:Cortex-M内核(ARM公司设计的部分) + 外设资源(芯片制造商设计的部分)

stm32g431,STM32,stm32,嵌入式硬件,单片机
Cortex-M家族有一系列的处理器,STM32F103内部使用的是Cortex-M3内核,STM32G431内部使用的是Cortex-M4内核,M4比M3多了DSP信号处理和FPU浮点运算单元

M3内核架构简化视图
stm32g431,STM32,stm32,嵌入式硬件,单片机
NVIC:向量中断控制器,负责中断控制以及中断处理事务

取指令单元:取指执行,通过总线将程序从程序存储器(128K闪存)取出,交给解码器

解码器:指令解码

ALU: 算术逻辑单元, 是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算

自带追踪接口和调试系统

存储逻辑运算的结果放在寄存器组中
stm32g431,STM32,stm32,嵌入式硬件,单片机
想要深入学习寄存器组的作用,参考这一篇:M3/M4内核基础

三、芯片内部结构

1.外设资源

STM32G4系列控制器参考手册:查看开发板外设的资源和资源的数量
stm32g431,STM32,stm32,嵌入式硬件,单片机
stm32g431,STM32,stm32,嵌入式硬件,单片机

stm32g431,STM32,stm32,嵌入式硬件,单片机
stm32g431,STM32,stm32,嵌入式硬件,单片机

2.内部模块框图

STM32G431RB数据手册:查看外设所对应的时钟总线
stm32g431,STM32,stm32,嵌入式硬件,单片机

GPIO(A-G) : 挂载在AHB2时钟总线上
定时器1,8,15,16,17 : APB2
定时器2,3,4,I2C: APB1
AHB1分为 APB1和APB2时钟总线
stm32g431,STM32,stm32,嵌入式硬件,单片机

3.时钟树

STM32G4系列微控制器参考手册: 查看时钟树
stm32g431,STM32,stm32,嵌入式硬件,单片机
时钟树:
stm32g431,STM32,stm32,嵌入式硬件,单片机
STM32的时钟源主要有: 内部时钟、外部时钟、锁相环倍频输出时钟。内部时钟、外部时钟又分为告诉高速、低速时钟

系统时钟有三种来源:高速外部时钟(4-48Mhz),高速内部时钟(16 Mhz), PLL锁相环倍频输出时钟

PLL锁相环时钟来源有两种HSE和HSI,经过倍频输出
stm32g431,STM32,stm32,嵌入式硬件,单片机
OSC_IN 和OSC_OUT对应PF0,PF1时钟输入引脚

配置时钟:

1.在CubeMX中配置RCC选择外部时钟HSE,对应引脚起作用
stm32g431,STM32,stm32,嵌入式硬件,单片机
2.倍频设置
stm32g431,STM32,stm32,嵌入式硬件,单片机
将外部时钟设置为24Mhz,经过三分频变为8Mhz, 经过锁相环乘20除以2,变为80Mhz, 将系统时钟来源选择PLLCLK , 系统时钟就是80Mhz, 再一分频得到AHB总线时钟,最终得到外设时钟。

对应代码

void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

到了这里,关于STM32 G431的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(77)
  • 嵌入式项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(152)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(60)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(62)
  • 嵌入式毕设分享 基于单片机的风速测量系统 - 物联网 嵌入式 stm32 arduino

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(69)
  • 嵌入式毕设分享 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(60)
  • 【项目设计】基于STM32人脸识别系统 - 单片机 物联网 嵌入式

    项目设计主要是对于所学知识的整体回顾,需要结合各个学科,才能做出达到符合标准的设计。 文章的目的在分享优质的项目以及项目经验,提供设计思路,欢迎交流与指正不足之处。 由于人脸识别技术具有无需接触、安全性高、可靠性高等优点,在身份认证领域具有广阔

    2024年01月21日
    浏览(69)
  • stm32毕设分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月21日
    浏览(88)
  • stm32毕设分享 stm32单片机酒精浓度酒驾检测系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(70)
  • STM32毕设分享 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年04月11日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包