中断是什么?
中断就是单片机应对突发情况的一种状态;那生活中的例子类比一下,跑步的时候鞋带开了,这个时候你要停下跑步去系鞋带,然后继续跑步,那么鞋带开了就是一种突发情况
中断优先级
用数字表示中断的紧急情况,当多个中断同时发生,总要有一个先后顺序,优先级就决定了执行的先后顺序
中断优先级中又分为抢占优先级和子优先级
抢占优先级决定了中断是否会被其他高优先级的中断打断从而执行高优先级的中断即嵌套,数字小优先级就高
子优先级决定了当出现了同级抢占优先级,排队先后的问题,子优先级越小排队越靠前,子优先级相同时,按照中断的先后排队执行
注意:嵌套是直接打断当前中断程序,而排队不会打断当前中断程序
NVIC_InitTypeDef NVIC_InitStruct; // 定义结构体
NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn; // 配置中断名称,不知道需要查文件 stm32f10x.h 搜索IRQn
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; // 抢占优先级
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; // 子优先级
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //开关
注意:声明中断函数的时候,函数名不可以随便乱起,同样需要查找文件 startup_stm32f10x_md.s 然后自己翻
有一点我觉得stm32比51好一点的吧,51的中断需要在主函数中进行判断当某个中断的触发条件达成,将中断的标志位开启,然后才会进入中断;而stm32则不同,可以直接在中断函数里面判断中断条件,并且写中断的执行代码
浙公网安备 33010602011771号