STM32F1学习笔记

STM32固件库初识

STM32_词典

  1. 汇编编写得启动文件

startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表(中断服务函数名)、配置系统时钟、对C库函数_main最终去到C得世界。

  1. 时钟配置文件

system_stm32f10x.c:把外部时钟HSE = 8M,经过PLL倍频到 72M (9倍频),范围为1-16,系统默认 72。

  1. 外设相关
stm32f10x.h://实现了内核之外的内设的寄存器映射。
xxx:GPIO、USRAT、等等。
stm32f10x_xx.c://外设的驱动函数库文件。
stm32f10x_xx.h://存放外设的初始化结构体,外设初始化结构体成员得参数列表,外设固件库函数的声明。
  1. 内核(core)相关

CMSIS-Corex 微控制器软件接口标准

core_cm3.h://实现了内核里面外设的寄存器映射
core_cm3.c:

NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)

misc.h
misc.c
  1. 头文件的配置文件
stm32f10x_conf.h://头文件的头文件
stm32f10x_GPIO.h
stm32f10x_usart.h
stm32f10x_i2c.h
stm32f10x_adc.h
stm32f10x_spi.h
·······
  1. 专门存放终端服务函数的C文件

stm32f10x_it.c
stm32f10x_it.h
中断服务函数可以随意放在其他地方,并不是一定要放在stm32f10x_it.c

中断编程的顺序

1.使能中断请求
2.配置中断优先级分组
3.配置NVIC寄存器,初始化NVIC_InitTypeDef;
4.编写中断服务函数

中断优先级的定义
优先级设定:NVIC_IPRx
高四位用于表达优先级 低四位未用

=====================================================================================================================
NVIC_PriorityGroup   	| NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority  | Description
=====================================================================================================================
NVIC_PriorityGroup_0 	|                0                  |            0-15         	 |   0 bits for pre-emption priority				|                                   |                            |   4 bits for subpriority
---------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_1    |                0-1                |            0-7             |   1 bits for pre-emption priority				|                                   |                            |   3 bits for subpriority
---------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_2    |                0-3                |            0-3             |   2 bits for pre-emption priority				|                                   |                            |   2 bits for subpriority
---------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_3    |                0-7                |            0-1             |   3 bits for pre-emption priority				|                                   |                            |   1 bits for subpriority
---------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_4    |                0-15               |            0               |   4 bits for pre-emption priority				|                                   |                            |   0 bits for subpriority                       
=====================================================================================================================

中断编程

使能中断请求
外设使能,配置外设的中断寄存器

NVIC->总开关  //相当51EA

中断优先级分组

SCB_ARCR -> PRIGRCUP 分组

固件库编程调用什么函数?

NVIC_PriorityFroupConfig()//抢占优先级
NVIC_InitTypeDef 初始化结构体
/* misc.h函数库中 52-68 Line */
/* stm32f10x.h 中 100+ 所有的中断源 */
	1.uint8_t NVIC_IRQChannel; //中断源
	2.uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级
	3.uint8_t NVIC_IRQChannelSubPriority; //子优先级
	4.FunctionalState NVIC_IRQChannelCmd; //使能或失能

NVIC_Init 最后初始化 参数是结构体

NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

编写中断服务函数

1.终端服务函数名要怎么写?写错了怎么办
和启动文件里的名字对应,如果写错了也不会报错,而是执行启动文件中的空
2.中断服务函数要写在什么地方 [WEAK]弱定义
stm32f10x_it.c 里面对应的空函数

GPIO中断

/* 管理外部中断 */
外部中断/事件控制器(EXTI) 1->GPIO 2->EXTI 3->NVIC内核
EXTI框图八部分
输入线
1、输入先总共有多少,具体是那些
二十根中断/事件线 EXTI0 – EXTI19 零死角表18-1 EXTI中断/事件线
输入源 0-15 为PX 0-15 X对应可为A、B、C、D、E、F、G、H、I
输入源 16 为PVD输出
输入源 17 RTC 闹钟事件
输入源 18 USB唤醒事件
输入源 19 以太网唤醒时间(只适用互联型)

中断编程的要点

1.初始化要连接到的EXTI的GPIO
2.初始化EXTI用于产生中断/事件
3.初始化NVIC,用于处理中断
4.编写中断服务函数
5.main函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值