使用自定义引导加载程序使用主控制器对外围控制器或从控制器进行编程
Programing peripherals controllers or slave controller using master using customize bootloader
我正在开发一个系统,其中有 2 个从属外围设备和一个主控制器。我想使用主控制器对这 2 个从属外围设备进行编程。是否有针对此类编程的标准协议或体系结构。
否 - 但您可以使用内置的引导加载程序。在您自己的协议中发送命令以进入引导加载程序,然后按照 STM 应用笔记中的描述发送程序。我在我的许多设备中都是这样做的。
如何进入bootloader?互联网上有很多信息,但有些建议的质量很低。您需要在重置后将您的微控制器切换到舞台 - 然后调用引导加载程序。如果您使用 HAL 示例 routime 可能如下所示 (STM32F303):
void __attribute__((noreturn)) StartBootLoader(void) {
void (*BootLoad)(void) = (void (*)(void))0x1FFFD804;
HAL_RCC_DeInit();
HAL_DeInit();
SysTick -> CTRL = 0;
SysTick -> LOAD = 0;
SysTick -> VAL = 0;
__set_PRIMASK(1);
__set_MSP(*(uint32_t *)0x1FFFD800);
BootLoad();
while(1);
}
我正在开发一个系统,其中有 2 个从属外围设备和一个主控制器。我想使用主控制器对这 2 个从属外围设备进行编程。是否有针对此类编程的标准协议或体系结构。
否 - 但您可以使用内置的引导加载程序。在您自己的协议中发送命令以进入引导加载程序,然后按照 STM 应用笔记中的描述发送程序。我在我的许多设备中都是这样做的。
如何进入bootloader?互联网上有很多信息,但有些建议的质量很低。您需要在重置后将您的微控制器切换到舞台 - 然后调用引导加载程序。如果您使用 HAL 示例 routime 可能如下所示 (STM32F303):
void __attribute__((noreturn)) StartBootLoader(void) {
void (*BootLoad)(void) = (void (*)(void))0x1FFFD804;
HAL_RCC_DeInit();
HAL_DeInit();
SysTick -> CTRL = 0;
SysTick -> LOAD = 0;
SysTick -> VAL = 0;
__set_PRIMASK(1);
__set_MSP(*(uint32_t *)0x1FFFD800);
BootLoad();
while(1);
}