| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32G431介绍 -> 正文阅读 |
|
[嵌入式]STM32G431介绍 |
前言一、芯片简介1.家族 STC15单片机是8位CPU,地址以16进制表示:0x_ _ ; 容量为 2^32 = 4,294,967,296 ≈ 4×10^9 (其中 1GB = 10^9) 2.产品类别 像正点原子的F4,F:基础型,通用型 3.特点功能 4.引脚数 5.闪存容量 6.封装 二、Cortex-M内核整个芯片的组成 芯片由两大部分组成的:Cortex-M内核(ARM公司设计的部分) + 外设资源(芯片制造商设计的部分)
M3内核架构简化视图 取指令单元:取指执行,通过总线将程序从程序存储器(128K闪存)取出,交给解码器 解码器:指令解码 ALU: 算术逻辑单元, 是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算 自带追踪接口和调试系统 存储逻辑运算的结果放在寄存器组中 三、芯片内部结构1.外设资源STM32G4系列控制器参考手册:查看开发板外设的资源和资源的数量
2.内部模块框图STM32G431RB数据手册:查看外设所对应的时钟总线 GPIO(A-G) : 挂载在AHB2时钟总线上 3.时钟树STM32G4系列微控制器参考手册: 查看时钟树 系统时钟有三种来源:高速外部时钟(4-48Mhz),高速内部时钟(16 Mhz), PLL锁相环倍频输出时钟 PLL锁相环时钟来源有两种HSE和HSI,经过倍频输出 配置时钟: 1.在CubeMX中配置RCC选择外部时钟HSE,对应引脚起作用 对应代码
在STM32G431内部结构中,各个模块都是通过总线相连接。Cortex-M4内核相当于心脏,最高频率可达170MHz,它通过总线AHB进行数据交换,AHB分为AHB1和AHB2,AHB1又分为APB1和APB2 4.存储空间查看内存映射地址:STM32G4系列微控制器参考手册 内存映射分左、右两侧, 左侧是各个资源地址的大致分化,右侧是对左侧的细化 从地址 0x0800 0000 到 0x0808 0000 ,( 8 0000 )16进制 = ( 524288 )10进制,Flash memory被分配到的空间有 524KB 大小,远大于它本身的 128KB (2)RAM RAM分为:SRAM和DRAM
(3)外设 小结: 详细的外设地址(在上一页的下一页) 四、BOOT启动STM32上电启动后,程序代码从最底层地址0x0000 0000 开始运行 映射还可以将SRAM, System memory 等地址映射到0X0000 0000处 映射方式的选择由BOOT1,BOOT0决定 所以,单片机程序执行顺序
1.存储堆栈指针位置:先获取堆栈指针位置,告诉CPU,中间变量存储再SRAM中, 从下图可以看到首先获取堆栈指针,然后就跳转到复位中断函数 2.复位中断函数入口地址:CPU执行到这里,下一步跳转到复位中断函数 3.复位中断函数:CPU执行到这,先配置时钟,再跳转到主函数 4.主函数区域:执行主函数,进入while大循环 5.其他中断函数入口地址:发生中断后,中断位置自动激发,告诉CPU中断入口地址,CPU去执行中断 所以,在启动文件执行的时候,内核和每个外设的中断服务函数的地址都是已经确定好的,地址就存放在中断向量表中,而且在启动文件里面已经写好了中断服务函数,只是这些中断服务函数为空,而且带[weak]弱定义 那么需要在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官方对寄存器编程进行人性化封装后的产物 六、编译过程
1.将 .c 文件编译和 .s 文件汇编,生成 .o 目标文件 2.将 .o 对象文件和内存映射规范文件 通过连接器 生成可执行映像文件。MDK是生成 .axf 可执行文件 3.通过闪存编程器将可执行映像文件下载到芯片的Flash中 总结提示:这里对文章进行总结: |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:49:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |