关于stm32的一些笔记。。。
STM32引脚列表中主功能,默认复用功能和重定义功能的区别(转载别人的)
1 主功能就是STM32基本IO口,与外设没有连接的,我们可以直接输出或读入高低电平
使用时采用要初始化GPIO结构体参数,并打开端口的时钟
2 默认复用功能是与外设连接的IO口,单片机通过控制外设来控制IO口
使用时采用要初始化GPIO结构体参数,IO口的工作模式要更具STM32中文参考手册中,IO口复用功能的设置工作模式,
设置时,与主功能的唯一区别就是IO口的工作模式的不同。
3 当我想把外设不连接到默认引脚上,那就根据“重定义功能”这一列来重新定义外设连接的IO口。
一般情况我们不会用到。
注意:
一旦需要对AFIO寄存器配置时,一定要打开AFIO的时钟(一般在使用外部中断EXTI或外设引脚重定义时)
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/
1.core_cm3.c和头文件core_cm3.h,它们的作用是为那些采用Cortex-M3核设计SOC的芯片商设计的芯片外设提供一
个进入M3内核的接口
2.较重要的是在core_cm3.c文件中包含了stdin.h 这个头文件,这是一个ANSI C 文件,是独立于处理器之外的,
就像我们熟知的C语言头文件 stdio.h 文件一样。位于RVMDK这个软件的安装目录下,主要作用是提供一些新
类型定义,如:typedef unsigned char uint8_t
-
system_stm32f10x.c,是由ST公司提供的,遵守CMSIS标准。该文件的功能是设置系统时钟和总线时钟,
M3比51单片机复杂得多,并不是说我们外部给一个8M的晶振,M3整个系统就以8M为时钟协调整个处理器的工作。
我们还要通过M3核的核内寄存器来对8M的时钟进行倍频,分频,或者使用芯片内部的时钟。所有的外设都与时
钟的频率有关,所以这个文件的时钟配置是很关键的。 -
system_stm32f10x.c在实现系统时钟的时候要用到PLL(锁相环),这就需要操作寄存器,寄存器都是以存储器映
射的方式来访问的,所以该文件中包含了stm32f10x.h 这个头文件。 -
startup_stm32f10x_hd.s
启动文件是任何处理器在上点复位之后最先运行的一段汇编程序。在我们编写的c语言代码运行之前,
需要由汇编为c语言的运行建立一个合适的环境,接下来才能运行我们的程序。所以我们也要把启动文
件添加进我们的的工程中去;所以,总的来说,启动文件的作用是:
1. 初始化堆栈指针SP;
2. 初始化程序计数器指针PC;
3. 设置堆、栈的大小;
4. 设置异常向量表的入口地址;
5. 配置外部SRAM作为数据存储器(这个由用户配置,一般的开发板可没有外部SRAM);
6. 设置C库的分支入口__main(最终用来调用main函数);
7. 在3.5版的启动文件还调用了在system_stm32f10x.c文件中的SystemIni() 函数配置系统时钟,
在旧版本的工程中要用户进入main函数自己调用SystemIni() 函数。 -
还有一个很特别的misc.c文件,这个文件提供了外设对内核中的NVIC(中断向量控制器)的访问函数,在配置
中断时,我们必须把这个文件添加到工程中。