系统相关
首页 > 系统相关> > 基于STM32从零写操作系统系列---使用C语言

基于STM32从零写操作系统系列---使用C语言

作者:互联网

如有不详细的描述、错误或疑问,欢迎留言!!!

目的

C语言,相对于汇编有更好的可读性,便于维护等优点。下面实验将使用C语言实现点亮LED灯。C语言与硬件是紧密连在一起的,结合芯片中的flash和sram,简单了解C语言。

要求

1.有一定的C语言基础

2.了解编译链接脚本

3.了解stm32F103的硬件结构

,代码中有详细注释!

分析

1.首先了解硬件,如图

FLASH,就是存放.bin文件的地方。SRAM,用于存放程序的堆栈,全局变量。

2.了解链接脚本,如图:

3.如何复制data段到sram,如图:

4.初始化bss段,如图:

5.用C语言编写的led程序,主要是了解C语言中的全局变量,局部变量放在哪里。如图:

6.从反汇编.list文件中可以看到,上面这些数据放在什么地方,如图:

7.led.h头文件定义了寄存器,如图:

本质就是C语言中的指针操作,volatile作用是确保本条指令不会因编译器的优化而省略。如代码“RCC_APB2ENR |= 0x00000010;”,表示向寄存器的第4位(从0位开始计数)写1。

小结

本章主要了解硬件与软件之间关系,如,程序有多个section,他们有的放在flash中,有的放在sram中;程序有运行地址vma和加载地址lma,所以下载程序时要将程序下载到对应的加载地址上的,程序运行时需要将程序放到正确的运行地址上。源代码已分享,可自行下载编译调试,通过调试程序,观察程序如何在flash和sram上运行。如,通过gdb的调试指令,可以查看局部变量h的值。

标签:STM32,基于STM32,操作系统,系统系列,C语言
来源: