stm32学习笔记2

四 GPIO输入与输出
stm32学习笔记2_第1张图片
TTL肖特基触发器:电信号转变为数字信号
N-Mos管:输入为1时打开,0时截止
P-Mos管:输入为1时截止,0时打开
输出控制前有一个反向器
模式简介
输入模式:模拟输入模式,浮空输入模式(不使用上拉下拉电阻),上拉/下拉输入模式
输出模式:通用推挽输出,通用开漏输出 ,复用推挽输出,复用开漏输出
推挽输出:使用两个Mos管,输出为1——经反相器为0——P-Mos导通——最后输出1
输出为0——经反相器为1——N-Mos管开——最后输出0
开漏输出:只使用N-Mos。输出为0——经反相器为1——N-Mos导通——最后输出0
输出为1——经反相器为0——N-Mos截止——相当于高阻抗断路(什么都没 输出)
输入输出配置流程:
1 打开相应端口时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

2 初始化端口(配置输入输出模式,端口引脚,输出速度)
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
3读取IDR寄存器(输入寄存器)以及设置读取ODR(输出寄存器)
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

五 输入输出中断
(1)NVIC嵌套中断向量控制器
NVIC为内核中的外设,控制着所有的中断(所有的中断最后都需要在NVIC中处理),同时控制着中断的优先级,以及中断总开关。
NVIC的配置:
1. 选择分组的模式(共5种模式,分别分配了主优先级以及副优先级的个数)
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
2. NVIC初始化(包括NVIC使能(决定了哪个外设中断)),中断外设的通道(IRQn),主优先级以及副优先级) void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)

(2)EXTI外部中断/事件控制器
stm32学习笔记2_第2张图片
软件中断事件寄存器:与主线路是或的关系,可以通过在此寄存器中写“1”从而通过软件的方法激活中断。
请求挂起寄存器:相当于中断的状态位,当有中断发生时,挂起寄存器为1(等待NVIC进行优先级处理),当在此寄存器中写“1”,可以清除此寄存器的“1”.
中断屏蔽寄存器:EXTIx的开关。相当于选自了引脚的编号
输入线的选择: 这个寄存器在GPIO中,决定了选择哪个port
(3)输入中断配置流程
NVIC配置
1.选择NVIC分组的模式(5个组)
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
2. NVIC初始化(包括NVIC使能),中断外设的通道(IRQn),主优先级以及副优先级) (决定了哪个外设中断)
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)

GPIO配置(同GPIO)
3.打开相应端口时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
4.初始化端口(配置输入输出模式,端口引脚,输出速度)
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

EXTI配置
5.打开外设中断的时钟EXTI(AFIO)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
6.初始化EXTI(EXTI通道选择,中断与事件选择,上升下降沿选择)(决定了使用的引脚编号)
EXTI_Init(&EXTI_InitStruct);
7打开输入线口(决定了使用EXTIx通道中哪个Port)
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);

你可能感兴趣的:(stm32)