STM32学习记录3——中断

定义:

NVIC 即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。它是属于 CM3 内核的器件。
中断:就是当 CPU 执行程序时,由于发生了某种随机的事件(外部或内部),引起 CPU 暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程就称为中断。
中断源:引发中断信号来源称为中断源。
中断的嵌套:有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套。
中断通道:是传递、处理中断的信息通道。中断通道对应有唯一的中断号、中断优先级、中断向量、服务程序;1个中断通道可以有多个中断源,每个中断源有对应的中断处理程序。

STM32中断分类

1、CPU中断(15个通道)
包括非屏蔽中断、异常、指令中断、复位。
2、设备中断(43~68个通道)
指STM32微控制器片内所有设备的中断,其数量与型号有关,对于大容量(hd)类型,共60个。
3、外部中断(16个中断源、7个通道)
16个中断源,通过7个端口(PA、PB、PC、PD、PE、PF、PG)引脚接外部设备信号。7个中断通道:来自外部引脚。另外4个中断源连接的是内部设备,用于检测电压、RTC闹钟、两个唤醒CPU,且各占1个通道。

中断初始化配置

  • 将GPIO设置为:GPIO_EXTI功能。
  • 设置中断触发条件:上升沿,下降沿,上升沿或下降沿。
  • 使能相关NVIC通道

代码编写

使用按钮触发中断,改变小灯的状态

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin==GPIO_PIN_4)//C4引脚为按钮引脚,初始化设置为上升沿触发
	{
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_3);//改变C3小灯引脚的状态
	}
	if(GPIO_Pin==GPIO_PIN_5)//C5引脚为按钮引脚,初始化设置为下降升沿触发
	{
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0);//改变C3小灯引脚的状态
	}
}

这里有个小插曲,在上升沿触发中断的时候容易被多次触发,所以尝试在回调函数中使用延时函数,延时20毫秒,想要在第一次上升沿触发中断以后,跳过在按键抬起后的震荡,从而给按键消抖。但是程序运行了以后第一次中断触发以后单片机就卡死,搜集资料后发现中断里面不能延时,延时是错误用法。不过有点奇怪的是在编译的时候没有出现任何的报错和警告信息。
继续深入查询资料发现,可以不用按键触发外部中断,而是使用定时器中断,每隔一定时间对按键进行扫描,如果为按下状态,则标志位+1,否则标志位清零,当标志位达到一定的数值的时候,则视为按键按下。

void timer0(void)
{
    if(io_key==0)keycnt++;else keycnt=0
    if(keycnt==5)key=1;//连续5次都采集到就认为有按键
}

这里先存档一下大佬的代码,等下节学习定时器中断的时候实际尝试一下吧。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
根据引用内容,STM32C8T6是一款通用增强型的48脚单片机,具有64K闪存和LQFP封装。它适用于工业级温度范围-40~85度。下面是一些关于STM32C8T6学习的笔记: 1. 学习资料:可以从ST官方网站下载STM32C8T6的数据手册和参考手册,这些手册包含了该单片机的详细信息和使用方法。 2. 开发环境:为了开始学习STM32C8T6,你需要安装相应的开发环境。ST官方提供了一款免费的集成开发环境(IDE)——STM32CubeIDE,它可以帮助你进行代码编写、调试和下载。 3. 编程语言:STM32C8T6可以使用多种编程语言进行开发,包括C语言和汇编语言。C语言是最常用的编程语言,它可以通过STM32CubeIDE进行编写和调试。 4. 引脚配置:在使用STM32C8T6之前,你需要了解每个引脚的功能和配置。数据手册中有一张引脚功能表,可以帮助你了解每个引脚的用途和配置方法。 5. 时钟配置:STM32C8T6具有多个时钟源和时钟分频器,你需要根据自己的需求配置正确的时钟。时钟配置对于外设的正常工作非常重要。 6. 中断和定时器:STM32C8T6支持中断和定时器功能,这些功能可以帮助你实现各种任务和功能。你可以通过配置中断和定时器来实现外设的响应和定时操作。 7. 外设驱动:STM32C8T6具有丰富的外设,包括GPIO、UART、SPI、I2C等。你可以根据自己的需求选择合适的外设,并学习如何配置和驱动这些外设。 8. 调试和下载:在开发过程中,你可以使用STM32CubeIDE提供的调试功能来调试你的代码。一旦代码调试完成,你可以使用ST-Link或其他下载器将代码下载到STM32C8T6上运行。 希望以上笔记对你学习STM32C8T6有所帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值