一、寄存器赋值点灯
1、通过参考手册找到RCC时钟使能APB2端口 使能IOPC端口时钟
配置为:0x00000010
2、配置PC13端口模式
CNF 配置为通用推挽输出模式
MODE 配置为输出模式 最大速度50MHz
所以配置为: 0x00300000
3、配置端口输出寄存器
PC13口给0亮 1 灭 所以给0x00000000亮 0x00002000灭
程序如下:
#include "stm32f10x.h" // Device header
int main(void)
{
RCC->APB2ENR = 0x00000010;
GPIOC->CRH = 0x00300000;
GPIOC->ODR = 0X00000000;
while(1)
{
}
}
二、库函数点灯
1)点灯前配置函数库
1、库函数源文件 和 头文件 copy到工程文件目录下,misc是内核库函数,其他为内核外的外设库函数
2、在Keil中创建Library组 并添加Library文件夹下的所有文件进去,但是目前的所有文件还没法使用,需要再添加一个文件
3、打开固件库
conf文件用来配置库函数和头文件关系的,另外还有一个参数检查的函数定义,是所有库函数都需要的。
it文件里面存放的是中断(interrupt)函数
三个文件复制粘贴到工程的user目录下
最后需要创建一个宏定义,打开头文件
在里面找到条件编译这一项
意思是如果定义:USE_STDPERIPH_DRIVER(标准外设驱动) 使用这个字符串
则 conf头文件生效
复制
USE_STDPERIPH_DRIVER
打开 并粘贴
并 添加头文件目录
修改组排序
到此库函数配置完成
2)库函数点灯
1、配置APB2外设时钟状态;通过函数库的rcc控制函数,右键查看其定义可以知道,函数的形参可以如下
2、配置端口模式,调用GPIO_Init函数,此函数用结构体函数GPIO_InitTypeDef 配置。
右键查看该结构体的所包含的参数
3、右键相关结构体内变量名,ctrl+f 查找当前变量可设置的参数枚举函数
并设置配置端口输出模式的结构体相关的三个参数。
4、配置端口输出数据 用 GPIO_SetBits(GPIOC, GPIO_Pin_13); 这表示端口输出1 , ResetBits函数则为输出 0 。
到此,恭喜点亮STM32的PC13端口led灯,成功的开始。加油!
补充重点知识点:
1、新建工程的架构
1、STM32上电时或按下复位键,程序进入复位中断函数,复位中断函数主要调用sys和main函数。main函数后一定是一个死循环,主函数不结束。
2、systeminit函数作用是设置微控制器的启动,初始化嵌入式闪存接口,锁相环,更新系统内核的时钟变量,所以在main函数之前单片机已经执行了一系列操作。
3、启动文件还定义了其他中断,这些中断达到条件自动执行。
4、ST公司的提供的库函数和库函数配置,conf文件用来配置头文件包含关系,库函数通过直接调用函数来间接配置寄存器,这种库函数开发方式更加简洁,高效。
5、外设寄存器描述、内核寄存器描述里面描述的都是寄存器和寄存器每一位的名字、地址信息。