Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
STM32F1x例外、piority和NVIC_Stm32 - Fatal编程技术网

STM32F1x例外、piority和NVIC

STM32F1x例外、piority和NVIC,stm32,Stm32,我对异常和NVIC有点困惑。 在ARM中有两种主要的例外情况。与核心相关的和核心外的,外围的。 据我所知,从一些书NVIC主要控制核心以外的例外情况。此外,我们有两个单独的寄存器,分别保存大量异常中断优先级寄存器(NVIC_IPRx)和系统处理程序优先级寄存器(SHPRx)。 这两组异常如何通过NVIC相互关联?检查,第2.3章,特别是第2.3.5章 所有异常都具有关联的优先级,较低的优先级值表示较高的优先级。除重置、硬故障和NMI外,所有异常的优先级均可配置。如果软件未配置任何优先级,则具有可

我对异常和NVIC有点困惑。 在ARM中有两种主要的例外情况。与核心相关的和核心外的,外围的。 据我所知,从一些书NVIC主要控制核心以外的例外情况。此外,我们有两个单独的寄存器,分别保存大量异常中断优先级寄存器(NVIC_IPRx)和系统处理程序优先级寄存器(SHPRx)。 这两组异常如何通过NVIC相互关联?

检查,第2.3章,特别是第2.3.5章

所有异常都具有关联的优先级,较低的优先级值表示较高的优先级。除重置、硬故障和NMI外,所有异常的优先级均可配置。如果软件未配置任何优先级,则具有可配置优先级的所有异常的优先级为0

[……]

可配置的优先级值在0-15范围内。这意味着具有固定负优先级值的重置、硬故障和NMI异常始终比任何其他异常具有更高的优先级。例如,将更高的优先级值分配给IRQ[0],将更低的优先级值分配给IRQ[1]意味着IRQ[1]具有比IRQ[0]更高的优先级。如果同时声明IRQ[1]和IRQ[0],则IRQ将在IRQ[0]之前处理。如果多个挂起异常具有相同的优先级,则具有最低异常数的挂起异常将优先。例如,如果IRQ[0]和IRQ[1]都处于挂起状态且具有相同的优先级,则IRQ[0]在IRQ[1]之前处理

检查,第2.3章,特别是第2.3.5章

所有异常都具有关联的优先级,较低的优先级值表示较高的优先级。除重置、硬故障和NMI外,所有异常的优先级均可配置。如果软件未配置任何优先级,则具有可配置优先级的所有异常的优先级为0

[……]

可配置的优先级值在0-15范围内。这意味着具有固定负优先级值的重置、硬故障和NMI异常始终比任何其他异常具有更高的优先级。例如,将更高的优先级值分配给IRQ[0],将更低的优先级值分配给IRQ[1]意味着IRQ[1]具有比IRQ[0]更高的优先级。如果同时声明IRQ[1]和IRQ[0],则IRQ将在IRQ[0]之前处理。如果多个挂起异常具有相同的优先级,则具有最低异常数的挂起异常将优先。例如,如果IRQ[0]和IRQ[1]都处于挂起状态且具有相同的优先级,则IRQ[0]在IRQ[1]之前处理


ARM Cortex M提供了几种异常,但概括起来是:中断(主要由外围设备使用)、故障(例如内存冲突)和专用于操作系统实现的异常(主管调用、SysTick等)。还有复位和NMI。重置优先级较高,然后是NMI。其他异常优先级可通过两组寄存器进行配置:

  • 用于中断的NVIC_IPRx
  • 系统处理程序的SHPRx(即故障+SVC、SysTick和PendSV)

现在,优先级越低,优先级越高是例外。这就是重置和NMI具有负优先级的原因。

ARM Cortex M提供了几种异常,但概括起来是:中断(主要由外围设备使用)、故障(例如内存冲突)和专用于操作系统实现的异常(主管调用、SysTick等)。还有复位和NMI。重置优先级较高,然后是NMI。其他异常优先级可通过两组寄存器进行配置:

  • 用于中断的NVIC_IPRx
  • 系统处理程序的SHPRx(即故障+SVC、SysTick和PendSV)

现在,优先级越低,优先级越高是例外。这就是重置和NMI具有负优先级的原因。

是否所有这些异常都属于NVIC?有没有一种简单的方法来计算比例?这一切似乎有点复杂。不,据我所知,NVIC管理中断,其他异常由系统控制块或直接由内核管理。我不知道计算优先级是什么意思。你的意思是决定什么中断必须比其他中断更优先吗?这通常是常识,不太复杂。例如,假设您有一个通信协议,其bandwith具有挑战性,其优先级将很高。Systick优先级可能太高,无法保持准确。关于优先级分组,它是另一个控制级别:您可以在一组中断中设置不同的(子)优先级。区别在于,在同一优先群体中,它不是先发制人的。如果你不确定你是否需要它,你就不必使用它。所有这些例外情况都属于NVIC吗?有没有一种简单的方法来计算比例?这一切似乎有点复杂。不,据我所知,NVIC管理中断,其他异常由系统控制块或直接由内核管理。我不知道计算优先级是什么意思。你的意思是决定什么中断必须比其他中断更优先吗?这通常是常识,不太复杂。例如,假设您有一个通信协议,其bandwith具有挑战性,其优先级将很高。Systick优先级可能太高,无法保持准确。关于优先级分组,它是另一个控制级别:您可以在一组中断中设置不同的(子)优先级。区别在于,在同一优先群体中,它不是先发制人的。如果你不确定自己是否需要它,你就不必使用它。