里飞网

标题: STM32F0XX中断向量跳转的办法 [打印本页]

作者: 阿里兄    时间: 2020-6-12 09:45
标题: STM32F0XX中断向量跳转的办法
因STM32F0XX系统的SCB没有VTOR寄存器即SCB->VTOR,所以中断向量跳转要换一种方法。即把中断向量复制到SRAM最前面,方法如下:

  1. /* USER CODE BEGIN 0 */
  2. __IO uint32_t VectorTable[48] __attribute__((at(0x20000000)));

  3. // 重映射中断向量
  4. static void iRemapIrqVector(void)
  5. {
  6.         // 中断向量重映射
  7.         unsigned char i = 0;

  8.         for(i = 0; i < 48; i++)
  9.         {
  10.                 VectorTable[i] = *(__IO uint32_t*)(APP_START_ADDRESS + (i<<2)); //中断向量是一个指针,每个占4个字节
  11.         }

  12.         /* Remap SRAM at 0x00000000 */
  13.         __HAL_SYSCFG_REMAPMEMORY_SRAM(); //设置为RAM启动模式
  14. }

  15. /* USER CODE END 0 */
复制代码
然后在main函数最前面进行调用。
  1. int main(void)
  2. {
  3.   /* USER CODE BEGIN 1 */
  4.     iRemapIrqVector();
  5.   /* USER CODE END 1 */

  6.   /* MCU Configuration--------------------------------------------------------*/

  7.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  8.   HAL_Init();
复制代码
另MDK上也要进行SRAM的设置。
(, 下载次数: 1146)

以上即可以加bootloader进行固件升级了。






欢迎光临 里飞网 (http://dz.lfly.xyz/) Powered by Discuz! X3.3