6.NVIC中断配置(ST的精简ARM中断体系)

embedded/2024/11/9 17:08:46/

void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)//设置优先级分组,整个项目共用一个分组

uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)

//计算优先级编码值,(组号,抢占优先级,响应优先级)并返回

void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)

//设置具体中断源的优先级

void NVIC_EnableIRQ(IRQn_Type IRQn)//使能中断源

配置中断服务函数

void USART1_IRQHandler(void)

{

    //接收中断

    if((USART1->SR & (1<<5)))//表示接收到了数据

    {

    USART1->SR &= ~(1<<5);//标志位RXNE 标志也可以通过向该位写入零来清零,接收数据机器置1

    arr.str[arr.len++] = USART1->DR;//读取数据放到数组

    }

    //空闲中断

    if((USART1->SR) & (1<<4))//表示触发了接收中断且接收完了数据

    {

    //顺序清零,读取两个寄存器即可

    USART1->SR;

    USART1->DR;

    

    arr.str[arr.len] = '\0';

    arr.len = 0;

    arr.flat = 1;//标志位表示接收完数据

    printf("usart1:%s",arr.str);//把接收到的数据打印出来

    }

}

触发条件为串口接收数据,且只有接收中断触发后空闲中断才触发一次,特别注意的是串口助手的发送新行,会将数据补上\r\n,注意辨别

ARM中断体系:

NVIC 支持由软件指定的优先级。 通过对中断优先级寄存器的 8 位 PRI_N 区执行写操作,
来将中断的优先级指定为 0~255。(设置占先和次级优先级)

占先优先级和次级优先级公用一个PRI_N区域

为了对具有大量中断的系统加强优先级控制, NVIC 支持优先级分组机制。

分组机制:如图所示 

第一步:确定分组  ,写入值写入PRIGROUP寄存器中

第二步:往PRI_N写入值,确定占先级别值和次级级别值

注意:同一个工程,只能设置一个分组

STM32FXX中断体系:

ST公司精简了ARM的分组机制,占先和次级的分配区域为PRI_N高四位

使用的是ST芯片,所以需要遵循ST公司精简过的分组机制


http://www.ppmy.cn/embedded/20274.html

相关文章

基于LM Studio + LLaMA3 建立本地化的ChatGPT

4月19日&#xff0c;Facebook母公司Meta重磅推出了Llama3。即便大家现在对于大厂和巨头频繁迭代AI模型的行为已经见怪不怪&#xff0c;Meta的Llama3仍旧显得与众不同&#xff0c;因为这是迄今最强大的开源AI模型。LLaMA模型通常采用了类似于GPT&#xff08;由OpenAI开发&#x…

JET毛选学习笔记:如何利用《矛盾论》从做实验到做科研vol. 1

一、前情回顾 上一轮讲了基于《实践论》的方法论学习一门实验&#xff0c;从获取间接经验到实践&#xff0c;总结&#xff0c;再实践&#xff0c;再总结&#xff0c;反反复复无穷尽也&#xff0c;不知道大家悟出了多少呢&#xff1f;其实&#xff0c;有一个概念我刻意避开了没…

Windows 11 轻量简单的美化方案

Windows 11 美化最终往往是回到最初的默认配置 每次更新版本、重装系统都要维护无疑是麻烦事 这里存一下我的简易轻量级美化&#xff0c;多数云端同步&#xff0c;开箱即用 壁纸 Wallpaper engine 直接 steam 同步即可 HDR 在 post-processing 开启 多屏支持也比较好 类…

Int4:Lucene 中的更多标量量化

作者&#xff1a;来自 Elastic Benjamin Trent, Thomas Veasey 在 Lucene 中引入 Int4 量化 在之前的博客中&#xff0c;我们全面介绍了 Lucene 中标量量化的实现。 我们还探索了两种具体的量化优化。 现在我们遇到了一个问题&#xff1a;int4 量化在 Lucene 中是如何工作的以…

Git 流程和命令

Git 流程和命令 1.clone 远程项目 git clone [url] // 将存储库克隆到本地 2.复制代码到新clone的目录 &#xff1a;将目录所有文档添加到暂存区 git add . // 添加当前目录下所有文件至暂存区 3.将文件添加到暂存区&#xff0c;再添加到本地仓库&#xff0c;并记录下备注&…

HarmonyOS 鸿蒙下载三方依赖 ohpm环境搭建

前言 ohpm&#xff08;One Hundred Percent Mermaid &#xff09;是一个集成了Mermaid的命令工具&#xff0c;可以用于生成关系图、序列图、等各种图表。我们可以使用ohpm来生成漂亮且可读性强的图表。 本期教大家如何搭建ophm环境&#xff1a; 一、在DevEco Studio中&#…

http和https的区别

一、http 超文本传输协议 HTTP 被用于 Web 浏览器和网站服务器之间传递信息&#xff0c;HTTP 以明文方式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文&#xff0c;就可以直接读懂其中的信息。因此&#x…

【小迪安全2023】第59天:服务攻防-中间件安全CVE复现lSApacheTomcatNginx

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…