模仿STM32驱动开发实验
一、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、修改驱动
三、编译下载验证
本篇完!!!