10m网站并发量做网站投注代理犯罪吗
2026/1/13 0:00:36 网站建设 项目流程
10m网站并发量,做网站投注代理犯罪吗,专业做网站的公司保定,网站开发与制作一、什么是中断优先级#xff1f;想象一下你在看书#xff0c;同时手机响了#xff0c;水也烧开了——你需要决定先处理哪件事。中断优先级就是帮单片机做这个决定的规则。在STM32F407中#xff0c;有#xff1a;抢占优先级#xff1a;就像插队权限#xff0c;高抢占可以…一、什么是中断优先级想象一下你在看书同时手机响了水也烧开了——你需要决定先处理哪件事。中断优先级就是帮单片机做这个决定的规则。在STM32F407中有抢占优先级就像插队权限高抢占可以打断低抢占子优先级当抢占相同时谁先执行二、优先级分组最重要的一步STM32F407把4位优先级分成两部分有5种分法分组抢占位数子优先级位数抢占级数子优先数00位4位1个级别16个级别11位3位2个级别8个级别22位2位4个级别4个级别33位1位8个级别2个级别44位0位16个级别1个级别记住先选分组再设优先级三、设置三步曲第1步选择分组整个程序只设一次// 常用分组24个抢占级别每个抢占内有4个子优先级 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);第2步配置具体外设的中断// 以串口1中断为例 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel USART1_IRQn; // 中断源 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 1; // 抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority 0; // 子优先级 NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; // 使能 NVIC_Init(NVIC_InitStructure);第3步编写中断服务函数void USART1_IRQHandler(void) { if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) { // 处理接收数据 USART_ClearITPendingBit(USART1, USART_IT_RXNE); } }四、实用规则记住这些就够用了规则1先选固定分组推荐新手用分组2NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 这样有抢占优先级0-3子优先级0-3 // 数字越小优先级越高规则2重要中断设高抢占// 紧急的如看门狗抢占优先级设小数字 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0; // 普通的如串口抢占优先级设大数字 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 2;规则3同类型中断用子优先级区分// 两个串口抢占相同用子优先级区分 串口1抢占2子优先级0 // 优先处理 串口2抢占2子优先级1 // 稍后处理规则4系统中断的固定优先级复位优先级-3最高硬件错误优先级-2不可屏蔽中断优先级-1五、完整示例按键和串口中断#include stm32f4xx.h int main(void) { // 第1步设置分组整个程序只调用一次 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 第2步配置按键中断外部中断0 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0; // 高抢占 NVIC_InitStructure.NVIC_IRQChannelSubPriority 0; NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; NVIC_Init(NVIC_InitStructure); // 第3步配置串口1中断 NVIC_InitStructure.NVIC_IRQChannel USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 2; // 低抢占 NVIC_InitStructure.NVIC_IRQChannelSubPriority 0; NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; NVIC_Init(NVIC_InitStructure); // 其他初始化... while(1) { // 主循环 } } // 按键中断服务函数 void EXTI0_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line0) ! RESET) { // 处理按键 EXTI_ClearITPendingBit(EXTI_Line0); } } // 串口中断服务函数 void USART1_IRQHandler(void) { // 处理串口 }六、常见问题Q1为什么我的中断不执行忘记使能总中断__enable_irq();忘记使能具体外设的中断优先级设置冲突Q2怎么选择分组简单应用分组24×4组合够用了需要很多打断分组416个抢占级比如FreeRTOS需要精细排序分组016个子优先级Q3优先级数字能随便写吗不能如果分组2抢占只能0-3子优先只能0-3七、简单记忆口诀先设分组定规矩整个程序只一次。抢占决定谁插队子优决定同队序。数字越小越优先紧急中断抢占高。分组推荐用2号四种抢占足够用。总结先调用NVIC_PriorityGroupConfig()设分组推荐Group2再配置每个中断的抢占和子优先级数字越小优先级越高高抢占可以打断低抢占同抢占时高子优先先执行

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询