DSP28335四路PWM移相代码及跳转指令详解

需积分: 48 12 下载量 163 浏览量 更新于2024-08-06 收藏 1MB PDF 举报
"Cortex-M0权威指南 Cortex-M0参考手册" 本文主要讨论的是基于DSP28335芯片的四路PWM移相代码,同时涉及Cortex-M0处理器的跳转指令。在嵌入式系统编程中,跳转指令是控制程序流程的关键部分,它们用于无条件或有条件地改变程序执行的顺序。 在Cortex-M0处理器中,存在几种不同类型的跳转指令,包括B、BL、BX和BLX。这些指令的语法和操作如下: 1. B{cc} label:这是一个有条件跳转指令,其中'cc'代表条件代码,如EQ(相等)、NE(不等)等。它会根据条件代码判断是否进行跳转,跳转的目标地址是相对于当前PC(程序计数器)的相对表达式,范围在-2KB到+2KB之间。 2. BL label:这是带链接的跳转指令,除了进行跳转外,还会把下一条指令的地址存入LR(链接寄存器R14),以便将来可以返回。它的跳转范围较宽,可以在-16MB到+16MB之间。 3. BX Rm:这是一种间接跳转,通过寄存器Rm中的值作为目标地址进行跳转。如果Rm的最低位为0,会触发HardFault异常。跳转地址可以是任意值。 4. BLX Rm:这是带链接的间接跳转,类似于BL,但允许跳转到 Thumb 或 ARM 模式。同样,它也会设置LR的最低位为1,用于支持返回操作。与BX一样,如果Rm的最低位为0,也会触发HardFault异常。 跳转范围对于理解指令的使用非常重要,因为它决定了程序可以跳转到的地址空间大小。例如,B指令的跳转范围较小,适合于局部的分支操作,而BL和BLX则适用于更远距离的调用和返回,如函数调用。 在实际的四路PWM移相代码开发中,这些跳转指令可能用于实现定时器中断服务程序的调度,根据不同的PWM通道状态和配置选择不同的处理路径。例如,当一个PWM周期结束时,可能需要通过BLX指令跳转到相应的处理函数,更新PWM信号的相位。 此外,提供的资源信息还提到了广州周立功单片机发展有限公司,这是一家专注于微控制器产品和服务的公司,提供了Cortex-M0处理器的相关参考资料,如用户手册等,可以帮助开发者获取更多关于Cortex-M0的详细信息和支持。 理解和熟练掌握Cortex-M0处理器的跳转指令对于编写高效的嵌入式代码至关重要,尤其是在涉及到复杂的控制逻辑和中断处理时。同时,了解相关支持资源,如周立功公司的服务网络,也能为开发工作提供便利。