框架说明
- Libraries:
- 文件夹下是驱动库的源代码及启动文件,这个非常重要,我们要使用的固件库就在这个文件夹里面。
- CMSIS文件夹
- CM3
- CoreSupport
- core_cm3.c
- Core_cm3.h 头文件里面实现了内核的寄存器映射,对应外设头文件 备注-stm32f10x.h。
- 实现了操作内核外设的函数。
- core_cm3.h
- 包含备注-stdint.h
- core_cm3.c
- DeviceSupport
- ST
- STM32F10X
- ST
- CoreSupport
- CM3
- Project :
- 文件夹下是用驱动库写的例子和工程模板,其中那些为每个外设写好的例程 对我们非常有用,我们在学习的时候就可以参考这里面的例程,非常全面,简直就是 穷尽了外设的所有功能。
- Utilities:
- 包含了基于 ST 官方实验板的例程,不需要用到,略过即可。
- stm32f10x_stdperiph_lib_um.chm:
Stm32f10x.h
这个头文件实现了片上外设的所以寄存器的映射,是一个非常重要的头文件,在内核 中与之想对应的头文件是 core_cm3.h。
system_stm32f10x.c
system_stm32f10x.c 文件实现了 STM32 的时钟配置,操作的是片上的 RCC 这个外设。
- 系统在上电之后
- 首选会执行由汇编编写的启动文件
- 启动文件中的复位函数中调用的 SystemInit 函数就在这个文件里面定义
- 调用完之后,系统的时钟就被初始化成 72M
- 如果后面我们需要重新配置系统时钟,我们就可以参考这个函数重写
STM32F10x_StdPeriph_Driver 文件夹
路径:Libraries\STM32F10x_StdPeriph_Driver
包含:src和inc文件夹。工程中必不可少的三个文件
stm32f10x_it.c
这个文件是专门用来编写中断服务函数的。
system_stm32f10x.c
这个文件包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数,例如我们前两章提到供启动文件调用的“SystemInit”函数,用于上电后初始化时钟,该函数的定义就存储在 system_stm32f10x.c 文件。
STM32F103 系列的芯片, 调用库的这个 SystemInit 函数后,系统时钟被初始化为 72MHz,如有需要可以修改这个文 件的内容,设置成自己所需的时钟频率,但鉴于保持库的完整性,我们在做系统时钟配置 的时候会另外重写时钟配置函数。
stm32f10x_conf.h
该头文件包含了所有外设的头文件,只需要引用该文件就可以引用所有外设了。
stm32f10x.h 文件又包含了Stm32f10x_conf.h,所以只需要引用stm32f10x.h 就足够了。
有不需要的头文件,可以直接删除对这些文件的使用。
在 ST 标准库的函数中,一般会包含输入参数检查,即上述代码中的“assert_param” 宏,当参数不符合要求时,会调用“assert_failed”函数,这个函数默认是空的。
实际开发中使用断言时,先通过定义 USE_FULL_ASSERT 宏来使能断言,然后定义 “assert_failed”函数,通常我们会让它调用 printf 函数输出错误说明。
使能断言后,程序 运行时会检查函数的输入参数,当软件经过测试,可发布时,会取消 USE_FULL_ASSERT 宏来去掉断言功能,使程序全速运行。