一 回忆昨天的内容
串行通信
115200
8N1
串行通信与并行通信的区别
USART
同步和异步
时序
usart1_send_byte
while(*buf)
{
usart1_send_byte ---->usart1_send_data
}
usart1_recv_byte
二 中断
目标:把之前检测按键功能由轮询的方式改为中断
2.0 中断控制器
当使用中断时,首先了解中断控制器
NVIC 可嵌套的向量中断控制器
VIC 向量中断控制器
GIC 通用中断控制器 ----》 高端板子
一般情况下MCU使用NVIC和VIC
2.1 在STM32F103RBT6中的中断
NVIC 和ARM-CORTEX-M3紧密相连
NVIC会处理两个事情
1)NVIC会为每一个连接到NVIC上的中断源分配一个中断号
中断号的顺序一定和中断向量(异常处理函数)保持一致
2)处理优先级的问题
本身ARM提供8bit的空间来解决256个优先级,但是ST公司只用了4bit 用于处理16个优先级
2.2 通过手册了解EXTI中断
打开《stm32f10x中文参考手册》 P91
8.1.2章节中所指示的是中断和异常向量表
编号越小的(中断),优先级越高
表36中所指示的内容是不可以修改的
首先关注EXTI,它表示外部中断,可以配置成19个中断事件源
16个用来处理外部中断,剩余的3个用来处理其他中断
GPIO管脚可以触发中断,但是需要借助EXTI,一共有19个
PA0 PB0 PC0 PD0 ...都可以触发EXTI0
...
PA15 PB15 PC15 PD15 ...都可以触发EXTI15
结论:每一个GPIOx都可以触发EXTIx
注意:
1)NVIC和EXTI的区别
NVIC 控制器
EXTI 外部中断源
2)编号的问题
中断有中断号
中断号和异常向量表中的顺序有关
外部中断也有外部中断号
EXTI的中断号和GPIO的管脚相关
3)外部中断 EXTI0 对应的中断编号 0...
外部中断 EXTI9~5 对应的中断编号是同一个
有些外部中断独占一个中断号,有些外部中断共享一个中断号
也就是说,异常向量表中的第6函数是处理外部中断0
由于KEY0 对应的PC9 KEY1 对应的是PC8
且EXTI9~5对应的中断处理函数是同一个,所以要在中断处理函数中进行判断
2.3 了解外部中断配置寄存器
EXTIx[3:0] 配置成不同的值的时候,选择不同的管脚,它属于 AFIO_EXTICRx。
所以打开时钟的时候,需要将GPIOA,GPIOC,EXTI,AFIO的时钟打开
2.4 驱动EXTI(外部中断)
KEY0 PC9 EXTI9
KEY1 PC8 EXTI8
KEY2 PA0 EXTI0
KEY0 和 KEY1 在没有按下的时候,呈现高电平。
KEY2 逻辑和上述相反。
用中断的方式实现USART1接收字符串