stm32中断原理
1.搭载STM32的开发环境1.安装jdk
2.安装STM32CubeMX
安装结果如下
1.配置STM32CubeMX:安装HAL库
(1)选择自己想要安装的HAL库版本号
(2)下载HAL库,HAL库环境安装完成
安装结果如下
3.安装MDK5
2.利用HAL库新建keil5工程
1.STM32CubeMX建项目
1.选择的单片机型号以及点击开始工程项目
2.配置时钟,进入上面的RCC,有两个时钟,一个是HSE和LSE,将HSE那里设为Crystal/Ceramic Resonator
3.进入GPIO选择引脚 并且配置其工作模式:
选择了三个GPIO:PA0,PA1,PA2设置为了GPIO_output;以及一个PB5设置为外部中断源:
4.在GPIO界面里面点击PB5,对PB5的进行中断配置:
5.在CLK Configuration中,进行时钟配置
6.进入Project Manager,进行工程设置点击生成工程与代码:
2.keil工程编写
1.点击刚刚生成的keil5工程文件,双击main.c文件,在main函数上方进行编写一个中断函数HAL_GPIO_EXTI_Callback()以及自定义一个中断的标识符号flag
输入以下代码
uint32_t flag=0;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
if(GPIO_Pin == SWITCH_Pin){
GPIO_PinState pinState = HAL_GPIO_ReadPin(SWITCH_GPIO_Port,SWITCH_Pin);
if(pinState==GPIO_PIN_SET)
{
flag=1;
}
else if(pinState==GPIO_PIN_RESET)
{
flag=0;
}
}
}
2.在main函数里的while(1)里面写上如下代码:
if(flag1)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
HAL_Delay(1000);
}
else if(flag0)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
}
3.程序烧录
实验结果如下
(三)proteus仿真
1.搭建固定项目
1.新建工程
结果如下
2.绘制系统电路
1.选择发光二极管,选择红、黄、绿三种颜色的led
2.分别拖入原理框内,并与对应的端口相连接
3.分别给3个LED配置电源
4.将开关拖入原理图内,与设置的外部中断端口相连,并配置电源
结果如下
3.仿真运行
选对晶振频率,接入电网,开始仿真
结果如下
————————————————
版权声明:本文为CSDN博主「uppp123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2302_80163058/article/details/152666950
高优先级中断可打断低优先级中断,实现实时响应。 抢占优先级高的中断可打断抢占优先级低的中断 在中断处理完成后,应及时清除中断挂起标志,防止重复进入中断 NVIC 是整个中断系统的 “大脑” 或 “调度中心”。它负责管理和响应所有的中断源。 嵌套向量中断控制器 心作用是提升stm32效率,无需轮询即可响应外设事件 中断是一种硬件机制,允许外部或内部事件暂停 stm32当前执行的程序,转去执行特定的中断服务程序(ISR),执行完毕后返回原程序继续执行 中断处理需快速完成,支持嵌套执行 当特定事件(如GPIO电平变化、定时器溢出、串口数据到达等)发生时,外设向NVIC发送中断请求。NVIC根据优先级决定是否暂停当前任务。 中断是一种 异步事件响应机制,允许CPU在执行正常程序时,暂停当前任务,转去处理突发的外设请求 NVIC统一管理所有中断,支持优先级嵌套和快速响应 允许高优先级中断打断低优先级中断,但需控制嵌套深度 配置EXTI触发方式、NVIC优先级,编写中断服务函数 NVIC负责中断的全生命周期管理 ISR 和回调函数的执行时间应该尽可能短,避免影响主程序或其他中断的响应。 非常不错的基础教学 STM32的优先级数值 越小优先级越高 STM32中断是stm32暂停当前任务响应紧急事件的机制,核心流程为“中断请求→NVIC优先级裁决→执行服务函数→恢复现场”,由EXTI外部中断控制器与NVIC嵌套向量中断控制器协同实现。 STM32 的中断系统非常强大和灵活
页:
[1]
2