cortex-m3内核的芯片截图,以及内核学习

发布时间:2024-04-15  

以下几张是lpc的nvic截图,需要开启在线仿真后再截图~

从中可以看出,编号2-16的异常是cm3内核独有的,不是外设芯片的,也就是说,只要是cm3内核就必须有这些异常。

2和3的异常的优先级是固定为-2,-1的不能更改的,见下表的4.8的框图,这个是f10x的内核技术手册,是cm3技术手册的部分摘录说明的,因此也是很不错的参考资料。中文翻译就是:系统异常优先级寄存器吧,并且是字节访问的,SHPR1-SHPR3 are byte accessible.通常情况下,我们可以更该部分优先级的,比如PendSV 和SysTick,尤其是在有rtos的情况下,就需要根据情况来更改两者的优先级。

lpc1768中,我配置systick=31,因为在lpc的参考手册中是使用了5个bit来表示优先级分组或子优先级的。

来看看是怎么分配31的,这里的配置函数:等价于NVIC_SetPriority (-1,31);

 

这里等价于:SCB->SHP[11] = ((31<<3)&0xff)=0xF8,如此就将这个字节的高5位填充为1,lpc的优先级是比stm32多一位的,stm32只用了4位。

 

细看,这里的优先级分组是配置SCB_AIRCR的值=0xfa050000,

 

在Cortex™ -M3 r2p0 Technical Reference Manual手册中是这么描述的。0b000对应了128抢占优先级和2个子优先级,但是我找不到lpc的内核手册,所以无法明确具体的分组情况。因此保留了复位的值,0xfa050000,

 

另外外设的优先级我配置了9,来看看怎么配置的,

/* preemption = 1, sub-priority = 1 */
NVIC_SetPriority(TIMER1_IRQn, ((0x01 << 3) | 0x01));

===等价于

/* preemption = 1, sub-priority = 1 */
NVIC_SetPriority(2, ((0x01 << 3) | 0x01));

转到:下面的语句

NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    } 

===等价于

NVIC->IP[2] = 0x48,cm3内核规定的总共240个优先级寄存器,0x48就是他的优先级使用的高五位的。

 

下面是stm32的nvic截图,systick中断优先级=240,其实之用了高4位,就是0xf=15

 

  


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>