[STM32F4] 物联网之STM32开发一

[复制链接]
2069|57
 楼主| xiyaoko2365 发表于 2022-11-20 23:23 | 显示全部楼层
改进

#define     GPIOA_ODR    ( *(unsigned int *) ( GPIOA_BASE  +  0x14 ))

val  = GPIOA_ODR  ;    //读
GPIOA_ODR = val  ;     //写
 楼主| xiyaoko2365 发表于 2022-11-20 23:24 | 显示全部楼层
第二种方式:用结构体封装寄存器

用上面的方法去定义地址,还是稍显繁琐、根据我们每一类外设对应的寄存器组地址都是连续增长的特点,我们引入 C 语言中的结构体语法对寄存器进行封装

typedef struct {
uint32_t                MODER;                 /*Address offset: 0x00 */
uint32_t                OTYPER;         /*Address offset: 0x04 */
uint32_t                OSPEEDR;         /*Address offset: 0x08 */
uint32_t                PUPDR;                 /*Address offset: 0x0C */
uint32_t                IDR;                 /*Address offset: 0x10 */
uint32_t                ODR;                 /*Address offset: 0x14 */
uint32_t                BSRR;                 /*Address offset: 0x18 */
uint32_t                LCKR;                 /*Address offset: 0x1C */
} GPIO_TypeDef;

#define     GPIOA_BASE        ( (unsigned int ) 0x48000000 )
#define     GPIOA         ((GPIO_TypeDef *) GPIOA_BASE)
注:我们访问GPIOA的控制寄存器组时、直接使用宏定义好
 楼主| xiyaoko2365 发表于 2022-11-20 23:27 | 显示全部楼层
    GPIO_TypeDef 类型的指针,而且指针指向 GPIOA端口的首地址,这样我们直接用宏GPIOA访问改外设的任意一个寄存器

        GPIOA->MODER     =  0x20 ;

        GPIOA->OSPEEDR  =  0x16 ;
 楼主| xiyaoko2365 发表于 2022-11-20 23:28 | 显示全部楼层
STM32F0启动文件分析

内容概要:

STM32F0启动模式

C语言程序内存排布

启动文件startup_stm32f051.s分析
 楼主| xiyaoko2365 发表于 2022-11-20 23:29 | 显示全部楼层
STM32F0的启动模式:
35728637a47b4d2069.png
 楼主| xiyaoko2365 发表于 2022-11-20 23:29 | 显示全部楼层
注:Cortex-M0 的程序映像通常是从地址 0x00000000 开始的、系统复位后,处理器首先读取向量表中的前两个字(8 个字节),第一个字存入 MSP,第二个字为复位向量,它表示程序执行的起始地址(复位处理)
3293637a47edd74ba.png
26358637a47f4415e3.png
 楼主| xiyaoko2365 发表于 2022-11-20 23:30 | 显示全部楼层
根据启动模式的不同,用户闪存、系统闪存和SRAM都 可以映射到0x0的低端地址;      

我们的板子boot0直接接地,因此启动区域为flash启动
C语言内存排布:
41294637a48102355d.png


注:栈的作用是用于局部变量,函数调用,函数形参等的开销        
 楼主| xiyaoko2365 发表于 2022-11-20 23:31 | 显示全部楼层
      堆主要用来动态内存的分配

STM32F051启动文件分析:

源码及分析过程链接:https://pan.baidu.com/s/1R7ggGedaR4Zsxhzeis_8vg 密码:7060

注:使用keil打开最佳
万图 发表于 2024-11-12 07:12 | 显示全部楼层

把这干扰信号再次辐射出去
Uriah 发表于 2024-11-12 08:15 | 显示全部楼层

对变换器效率测量
帛灿灿 发表于 2024-11-12 10:11 | 显示全部楼层

印制电路板(PCB)的线路设计
Bblythe 发表于 2024-11-12 11:14 | 显示全部楼层

含有延展到远高于基本开关频率的谐波
周半梅 发表于 2024-11-12 13:10 | 显示全部楼层

需要设定一个阈值来对像素点进行设置
Pulitzer 发表于 2024-11-12 14:13 | 显示全部楼层

输入电容主要是起到高频能量存储器的作用
童雨竹 发表于 2024-11-12 16:09 | 显示全部楼层

二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色
Wordsworth 发表于 2024-11-12 17:12 | 显示全部楼层

它们对PCB布局的重要性
Clyde011 发表于 2024-11-12 18:15 | 显示全部楼层

混淆的话,会引起电源工作不稳定
公羊子丹 发表于 2024-11-12 19:08 | 显示全部楼层

通过OV7670摄像头进行图像采集
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部