2021-07-13--stm32f10x学习日志

#####学到什么记录什么

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值