首页 > 技术文章 > 模仿STM32驱动开发实验

chijiacong 2021-12-03 11:06 原文

一、STM32寄存器结构体详解

对于STM32而言,它使用一个结构体将一个外设的所有寄存器都放到一起。

 

二、修改驱动

1.添加清除BSS段代码

start.S

 1 .global _start
 2 
 3 .global _bss_start
 4 _bss_start:
 5     .word __bss_start
 6 .global _bss_end
 7 _bss_end:
 8     .word __bss_end
 9     
10 _start:
11     /* 设置处理器进入SVC模式 */
12     mrs r0,cpsr                 /* 读取cpsr到r0 */
13     bic r0,r0,#0x1f              /* 清除cpsr的bit4-0 */
14     orr r0,r0,#0x13             /* 使用SVC模式 */
15     msr cpsr,r0                    /* 将r0写入到cpsr */
16 
17     /*清除BSS段*/
18     ldr r0,_bss_start
19     ldr r1,_bss_end
20     move r2,#0
21 bss_loop:
22     stmia r0!,{r2}
23     cmp r0,r1            /*比较r0和r1里面的值*/
24     ble bss_loop       /*如果r0地址小于等于r1,继续清除bss段*/
25     /* 设置sp指针 */
26     ldr sp,=0x80200000
27     b main                              /* 跳转到C语言main函数*/

2、添加寄存器结构体

在结构体中添加寄存器的时候一定要注意地址的连续性,如果不连续的话要添加占位。

占位使用volatile unsigned int RESERVED_1[2],无实际作用。

3、修改驱动

 

三、编译下载验证

 

    本篇完!!!

推荐阅读