STM32学习记录 中断

STM32 中断非常强大,每个外设都可以产生中断
中断类型有:系统异常、外部中断。
在这里插入图片描述
NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能。两个重要的库文件:core_cm3.h和misc.h
在这里插入图片描述
在这里插入图片描述
中断编程的顺序
1-使能中断请求
2-配置中断优先级分组
3-配置NVIC寄存器,初始化NVIC_InitTypeDef;
4-编写中断服务函数

EXTI—外部中断/事件控制器
在这里插入图片描述

EXTI输入线有20条 通过AFIO外部中断寄存器来配置
EXTI初始化结构体
EXTI_InitTypeDef
1-EXTI_Line:用于产生 中断/事件 线
2-EXTI_Mode:EXTI模式(中断/事件)
3-EXTI_Trigger:触发(上/下/上下)
4-EXTI_LineCmd:使能或者失能(IMR/EMR)

系统定时器 SysTick :系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。
在这里插入图片描述
相关延时时间计算
t = reload * ( 1/clk )
Clk = 72M时,t = (72) *(1/ 72 M )= 1US
Clk = 72M时,t = (72000) *(1/ 72 M )= 1MS 时间单位换算: 1s = 1000ms = 1000 000 us = 1000 000 000ns
-systick中断优先级配置的是scb->shprx寄存器;而外设的中断优先级配置的是nvic->iprx,有优先级分组,有抢占优先级和子优先级的说法。
3-STM32里面无论是内核还是外设都是使用4个二迚制位来表示中断优先级。 4-中断优先级的分组对内核和外设同样适用。当比较的时候,只需要把内核外设的中断优先级的四个位按照外设的中断优先级来分组来解析即可,即人为的分出抢占优先级和子优先级。在这里插入图片描述
三种延时
1 软件延时`

`void delay(uint32_t count)
{
 for(;count!=0;count--);
}
delay(0xffffff);//直接调用

2.查询延时

void SysTick_Delay_ms(uint32_t ms)
{
 uint32_t i;
 SysTick_Config(72000);
 
 for(i=0;i<ms;i++)
 {
  while(!(SysTick->CTRL) &(1<<16));
 }
 //失能SysTick_CTRL_ENABLE_Msk
 SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;

3.中断延时

volatile uint32_t isr_ms;//在stm32f10x_it.c里要用extern声明
void SysTick_Delay_ms_INT(uint32_t ms)//中断
{
 isr_ms=ms;
 SysTick_Config(72000);
 
 while(isr_ms);
 //失能SysTick_CTRL_ENABLE_Msk
 SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值