#####学到什么记录什么
BSRR寄存器
高16位用于置0 低16位用于置1 各个位对“0”的此操作是免疫的
如果同时设置了对应的高低位,低位起作用
BRR寄存器
只有低16位有效
引脚的不一致性
所以输出高电平用BSRR,输出低电平用BRR
void GPIO_SetBits(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin)
{
GPIOx->BSRR |= GPIO_Pin;//使用BSRR寄存器,实现输出高电平
}
void GPIO_ResetBits(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin)
{
GPIOx->BRR |= GPIO_Pin;//使用BRR寄存器 实现输出低电平
}
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
int main(void)
{
RCC->APB2ENR |= 1<<4;
//GPIOC->CRH &=~(0x0F<<(4*5));
//GPIOC->CRH |=(1<<(4*5));用下面五句代替这注释掉的两句
//仿库函数操作
GPIO_InitTypeDef GPIO_InitStructure;//定义结构体
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//GPIO_Mode_Out_PP=0x10
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHZ;
GPIO_Init(GPIOC,&GPIOC_InitStructure);//将具体的参数写入到寄存器,完成初始化
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//调用置0 输出低电平
while(1);
}
void SystemInit()
{
}
##仿库函数操作
RCC->APB2ENR |= 1<<4;//确定配置时钟
GPIOC->CRH &=~(0x0F<<(4*5));//GPIOC 确定引脚组 c组
GPIOC->CRH |=(1<<(4*5));//配置模式 1.输出模式 最大速度为10MHZ 2.通用推挽模式
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//确定具体引脚 确定输出低电平
typedef struct
{
uint16_t GPIO_Pin;//确定引脚
uint16_t GPIO_Speed;//输出速度
uint16_t GPIO_Mode;//输出模式
}GPIO_InitTypeDef;
枚举类型
typedef enum
{
GPIO_Speed_10MHz=1,
GPIO_Speed_2MHz=2,
GPIO_Speed_50MHz=3 //进行赋值操作,如果成员变量是依次增加,23可省略 如果不是依次增加,需要具体写出来
//GPIO_Speed_10MHz=1,
//GPIO_Speed_20MHz,
//GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;//这是枚举类型的别名
stm32f10x_it.c和stm32f10x_it.h跟中断程序有关
NVIC:嵌套向量中断控制器
stm32f10x_conf.h 只有这一个头文件,配置文件,掌控全局
stm32f10x_ppp.c stm32f10_ppp.h 外设文件
system_stm32f10x_it.c和system_stm32f10x_it.h 设置时钟
####中断
NVIC中断控制器
中断配置
misc.c
misc.h
core_cm3.c
core_cm3.h
中断类型:内核中断 外部中断 (只要有中断就要配置NVIC相关函数)
怎么管理中断(若多个中断同时发生)
1.NVIC是嵌套向量中断控制器,控制着整个芯片的中断相关功能
2.NVIC跟内核紧密耦合,是内核里面的一个外设
misc.c misc.h core_cm3.c core_cm3.h 可以从这四个文件里找
3.STM32有84个中断,包括16个内核中断和68个可屏蔽中断(外部中断),具有16级可编程的中断优先级。STM32F103系列有10个内核中断和60个可屏蔽中断(外部中断)
中断管理方式:每个中断的优先级由一个字节控制,一个字节有八位
每个字节的低四位不能使用,只有高四位表示
高四位表示的16种情况,中断等级可以是一样的
高四位分成两类,抢占优先级,响应优先级 将抢占优先级认为老大
每个位有两种选择(抢,响),有四个位,共16种情况
抢占优先级的范围和响应优先级的范围是一样的,数字越小优先级越高
比如中断A的抢占优先级是1(0~3) 响应优先级是3(0~3)
中断B的抢占优先级是2,则A抢>B抢
抢占优先级和响应优先级的联系和区别
1、高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断
2、抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断
3、抢占优先级相同的中断,当两个中断同时发生的情况下有,哪个响应优先级高,哪个先执行
4、如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行哪一个
一次工程只能分一次组!!!!经常采用 抢 抢 响 响
uart4 uart5 TIM3(定时器3)
抢 3 1 1
响 3 3 2