【STM32】中断编程入门

【STM32】中断编程入门

一. 实验目的:

学习stm32中断原理和开发编程方法。使用标准库完成以下任务:

二. 实验内容:

1)用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。如果完成后,尝试在main函数while循环中加入一个串口每隔1s 发送一次字符的代码片段,观察按键中断对串口发送是否会带来干扰或延迟。

按键中断点亮LED灯可参考教材课件上的6.4.3示例。

2)采用串口中断方式重做上周查询方式的串口通信作业,分别实现:

(1)当stm32接收到1个字符“s”时,停止持续发送“hello windows!”; 当接收到1个字符“t”时,持续发送“hello windows!”(提示:采用一个全局标量做信号灯);

(2)当stm32接收到字符“stop stm32!”时,停止持续发送“hello windows!”; 当接收到字符“go stm32!”时,持续发送“hello windows!”(提示:要将接收到的连续字符保存到一个字符数组里,进行判别匹配。写一个接收字符串的函数。

三. 具体实验过程:

EXIT中断通常指的是在STM32微控制器中使用的外部中断(‌External Interrupt)‌
这些中断可以由外部信号触发,‌用于响应外部事件,‌如按键按下、‌传感器信号变化等。‌在STM32中,‌外部中断是通过配置GPIO(‌通用输入输出)‌引脚和EXTI(‌外部中断/事件控制器)‌来实现的。‌
以下资料来自bilibili-江协科技https://www.bilibili.com/video/BV1th411z7sn

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

EXTI (Extern Interrupt)外部中断

EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电
平变化时,EXTI将 立即向NVIC发出中断申请,经过NVIC裁决后 即可
中断CPU主程序,使CPU执行EXTI对应的中断程序
支持的触发方式:上升沿/下降沿/双边沿/软 件触发
支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断
通道数: 16个GPIO Pin,外加PVD输 出、RTC闹钟、USB唤醒、以
太网唤醒
触发响应方式:中断响应/事件响应
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主要代码
int main(void)
{
	/*模块初始化*/
	OLED_Init();		//OLED初始化
	Timer_Init();		//定时中断初始化
	
	/*显示静态字符串*/
	OLED_ShowString(1, 1, "Num:");			//1行1列显示字符串Num:
	
	while (1)
	{
		OLED_ShowNum(1, 5, Num, 5);			//不断刷新显示Num变量
	}
}

/**
  * 函    数:TIM2中断函数
  * 参    数:无
  * 返 回 值:无
  * 注意事项:此函数为中断函数,无需调用,中断触发后自动执行
  *           函数名为预留的指定名称,可以从启动文件复制
  *           请确保函数名正确,不能有任何差异,否则中断函数将不能进入
  */
void TIM2_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)		//判断是否是TIM2的更新事件触发的中断
	{
		Num ++;												//Num变量自增,用于测试定时中断
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);			//清除TIM2更新事件的中断标志位
															//中断标志位必须清除
															//否则中断将连续不断地触发,导致主程序卡死
	}
}

四. 总结:

本次实验中学习了通过外部中断来控制单片机任务进程的方法,使我受益匪浅

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值