- 博客(9)
- 收藏
- 关注
原创 STM32单片机位带区与位带别名区的解析
例如,STM32的SRAM位带别名区地址范围为0x2200 0000至0x23FF FFFF(32MB),外设位带别名区为0x4200 0000至0x43FF FFFF(32MB)。别名区地址 = 0x4200 0000 + (0x1000 × 32) + (2 × 4) = 0x4200 0000 + 0x20000 + 0x8 = 0x4220 0008。2)外设位带区:地址范围为0x4000 0000至0x400F FFFF,对应外设寄存器的最低1MB空间。
2025-04-03 11:39:09
453
原创 STM32单片机的stm32f10x_it.c、stm32f10x_conf.h 和 system_stm32f10x.c 文件
例如,若未使用CAN总线,可注释对应的头文件以减少代码体积。STM32F10x开发中常见四个关键文件——stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h和system_stm32f10x.c。使用场景:在启动文件(如startup_stm32f10x_md.s)中,SystemInit()会在跳转到main()前自动调用,确保系统时钟正确初始化。(2) stm32f10x_it.h:声明stm32f10x_it.c中的中断服务函数,供其他文件调用。
2025-03-26 10:54:19
560
原创 STM32单片机‘&’在结构体指针的运用
先配置GPIO_InitStructure ,GPIO_InitStructure 被配置为推挽输出模式(GPIO_Mode_Out_PP)、引脚1和2(GPIO_Pin_1 | GPIO_Pin_2)、50MHz速度(GPIO_Speed_50MHz)。这一语句中,&GPIO_InitStructure 的作用是将结构体变量 GPIO_InitStructure 的内存地址传递给函数 GPIO_Init(),而非传递结构体本身的值。地址传递:将变量的内存地址传递给函数,函数通过指针直接修改原变量。
2025-03-25 15:30:09
477
原创 STM32单片机GPIOx_BSRR与GPIOx->BSRR的对比分析
在STM32开发中,GPIOx_BSRR和GPIOx->BSRR均用于操作BSRR(BitSet/ResetRegister)寄存器,但两者的实现方式、抽象层级及适用场景存在显著差异。GPIOx(如GPIOB)是一个指向GPIO_TypeDef结构体的指针,BSRR是结构体成员,通过编译器自动计算偏移量。若使用 |= 操作(如GPIOx->BSRR |= GPIO_Pin),可能触发“读-改-写”过程,存在中断干扰风险。BSRR的高16位用于清除引脚,低16位用于设置引脚,同时操作时低16位优先级更高。
2025-03-25 11:36:44
486
原创 STM32单片机RCC(Reset and Clock Control)模块的详细解析
关于STM32 RCC(Reset and Clock Control)模块的详细解析,结合其核心功能、时钟架构、配置流程及常见问题
2025-03-21 09:59:39
960
原创 STM32单片机GPIO模块中核心寄存器的详细说明
作用:每组GPIO有16个引脚,CRL控制低8位(GPIOx0-GPIOx7),CRH控制高8位(GPIOx8-GPIOx15)。作用:实现原子操作,低16位用于置位(输出高电平),高16位用于复位(输出低电平)。作用:控制引脚的输出电平(低16位有效),直接写入值可设置高/低电平。作用:仅低16位有效,用于快速复位引脚电平(等效于BSRR的高16位)。输出模式下:00(推挽输出)、01(开漏输出)、10(复用推挽)、11(复用开漏)输入模式下:00(模拟输入)、01(浮空输入)、10(上拉/下拉输入)
2025-03-20 18:11:06
514
原创 STM32单片机通过指针实现对寄存器的读写操作
解读#define GPIOB_CRL *(unsigned int*)(GPIOB_BASE+0x00),加深对通过指针实现对寄存器的读写操作的理解
2025-03-20 11:34:10
290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人