完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
上下文:我正在编写我的第一个 STM32“从头开始”项目。命令行 (Windows 10) 中的 Notepad++ 和 GCC 是我的 IDE。我以前从来没有这样做过,所以我正在学习绳索,首先了解汇编(但将自己的汇编保持在最低限度,C 完成这项工作),编写我的第一个 makefile,链接描述文件等。我一直在工作关于我的 NVIC 实现,我有几个问题想澄清一下。搜索互联网给出了部分结果。我想从比我更了解这些东西的人那里获得全貌。
Windows 10,STM32F746 探索板。没有 CMSIS,什么都没有。目前主要是C。到目前为止,我已经创建了自己的向量表,将 .data 和 .bss 放在我希望它们去的地方(SRAM2,因为 SRAM1 是可执行的,谁知道我以后会不会变得可爱并想从 SRAM 中运行一些东西来获得乐趣其中)。在重置处理程序将所有数据放在它应该去的地方后,我成功运行了 main(void)。 问题1:多个中断是否可以同时处于Active状态,或者严格来说一次只有一个处于active状态,而其他的都处于pending状态?(考虑所有情况,包括低优先级中断在执行过程中被高优先级中断打断)。我在假设一次只能激活一个中断的情况下实现我的 NVIC 功能。在那之后,我在互联网上遇到了一些可能有不同建议的材料。如果能一劳永逸地回答这个问题就好了。 问题 2:在阅读编程手册 PM0253 时,我遇到了生成处理器指令的 CMSIS 函数(第 62 页)。第一个是 CPSIE/CPSID。我搜索了它们是什么,最后找到了 ARM 网站,该网站描述了它的功能和参数,但没有提供任何上下文。所以我知道如何使用指令,但我实际上不知道它的作用以及为什么我需要它(特别是如果我的程序是在 C 中并且我可以通过直接写入 NVIC 相关寄存器来启用或禁用中断,这是可以轻松做到)。 所以,这是 ARM 网站上的一段: 我的问题是“中止”这个词。中止什么?我的意思是,我使用的 MCU 上有 100 多个中断,这很清楚。但什么是中止?中止什么? 接下来,它还提到了处理器的一些“模式”,所以我搜索了一下,最后在 ARM 页面上找到了描述这些我从未听说过的“模式”的页面。不是线程和处理程序模式,而是其他一些模式,它们有一些奇怪的数字。这里: 据我所知,具有特权级别 PL0 的 USR 模式基本上是线程模式,而 PL1 对我来说似乎是处理程序模式(现在暂且不谈 PL2)。另外,据我所知,FIQ 表示故障处理程序。另外,我的直觉猜测是不同的异常与不同的模式相关联(内存访问异常的中止模式?)。我想,当我用 C 编写代码时,编译器会进行这种模式切换吗?还是在触发异常处理程序时自动发生?CPS 更改处理器状态指令有什么意义?手动将模式设置为 FIQ 有什么意义?如果我在 IRQ 模式下调用故障处理程序会发生什么?毕竟他们有同样的特权。哦,是的,我仍然不知道 ABT 中止模式是什么以及它的作用,它看起来像是一个单独的模式来处理内存访问异常,比如与 MPU 相关的异常。事实上,我没有在我的 MCU 的数据表/参考手册/编程手册中找到任何这些模式(它们的缩写)的提及。 对于相当模糊的问题,我深表歉意,但我正在尝试在这里学习东西。您的回复可以是一些文本,甚至可以只是指向某些文章或页面的链接,这些内容将以更友好的方式进行讨论。谢谢你。 |
|
相关推荐
1个回答
|
|
|
同时,我找到了 NVIC Active Bit 问题的答案。
可以同时设置多个有效位。一旦中断处理程序开始,它的活动位就会被设置为 1。即使这个中断被更高优先级的中断打断,它的活动位也会保持为 1,直到它的中断处理程序完成。因此,如果低优先级中断被高优先级中断打断,则在高优先级中断处理程序执行期间,两个处理程序的活动位都将设置为 1。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1456 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1505 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3652 浏览 1 评论
3844 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2463 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
731浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
666浏览 5评论
714浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
947浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
751浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 19:10 , Processed in 0.670808 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
339