• STM32工程中出现 error: A1163E: Unknown opcode R0, , expecting opcode or Macro错误分析及处理


    最近测试以前的一个程序,一般都是打开以前写的程序修改参数直接测试

    但是发现以前的编译后出现错误。

    奇怪了,以前的出现都是调试好了的啊,一般都是没有错误的,迅速找问题

    跳转到错误代码行

    代码区域

      1 Heap_Size       EQU     0x00000000
      2 
      3                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3
      4 __heap_base
      5 Heap_Mem        SPACE   Heap_Size
      6 __heap_limit
      7 
      8                 PRESERVE8
      9                 THUMB      ;指定为THUMB代码集
     10 
     11 
     12 ; Vector Table Mapped to Address 0 at Reset
     13                 AREA    RESET, DATA, READONLY       ;伪指令指定一下数据将放到程序存储区的开始。
     14                 EXPORT  __Vectors
     15                 EXPORT  __Vectors_End
     16                 EXPORT  __Vectors_Size
     17 
     18 __Vectors       DCD     __initial_spTop           ; Top of Stack    栈首地址值(注意:CM3的栈指针是递减的)
     19                 DCD     Reset_Handler             ; Reset Handler   复位函数的入口地址
     20                 DCD     NMI_Handler               ; NMI Handler     以下为响应的中断函数入口地址
     21                 DCD     HardFault_Handler         ; Hard Fault Handler
     22                 DCD     MemManage_Handler         ; MPU Fault Handler
     23                 DCD     BusFault_Handler          ; Bus Fault Handler
     24                 DCD     UsageFault_Handler        ; Usage Fault Handler
     25                 DCD     0                         ; Reserved
     26                 DCD     0                         ; Reserved
     27                 DCD     0                         ; Reserved
     28                 DCD     0                         ; Reserved
     29                 DCD     SVC_Handler               ; SVCall Handler
     30                 DCD     DebugMon_Handler          ; Debug Monitor Handler
     31                 DCD     0                         ; Reserved
     32                 DCD     PendSV_Handler            ; PendSV Handler
     33                 DCD     SysTick_Handler           ; SysTick Handler
     34 
     35                 ; External Interrupts                                           以下为STM32定义的中断入口地址也是CM3定义的外部中断(非CM3内核中断)入口地址
     36                 DCD     WWDG_IRQHandler           ; Window Watchdog
     37                 DCD     PVD_IRQHandler            ; PVD through EXTI Line detect
     38                 DCD     TAMPER_IRQHandler         ; Tamper
     39                 DCD     RTC_IRQHandler            ; RTC
     40                 DCD     FLASH_IRQHandler          ; Flash
     41                 DCD     RCC_IRQHandler            ; RCC
     42                 DCD     EXTI0_IRQHandler          ; EXTI Line 0
     43                 DCD     EXTI1_IRQHandler          ; EXTI Line 1
     44                 DCD     EXTI2_IRQHandler          ; EXTI Line 2
     45                 DCD     EXTI3_IRQHandler          ; EXTI Line 3
     46                 DCD     EXTI4_IRQHandler          ; EXTI Line 4
     47                 DCD     DMA1_Channel1_IRQHandler  ; DMA1 Channel 1
     48                 DCD     DMA1_Channel2_IRQHandler  ; DMA1 Channel 2
     49                 DCD     DMA1_Channel3_IRQHandler  ; DMA1 Channel 3
     50                 DCD     DMA1_Channel4_IRQHandler  ; DMA1 Channel 4
     51                 DCD     DMA1_Channel5_IRQHandler  ; DMA1 Channel 5
     52                 DCD     DMA1_Channel6_IRQHandler  ; DMA1 Channel 6
     53                 DCD     DMA1_Channel7_IRQHandler  ; DMA1 Channel 7
     54                 DCD     ADC1_2_IRQHandler         ; ADC1 & ADC2
     55                 DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
     56                 DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
     57                 DCD     CAN1_RX1_IRQHandler       ; CAN1 RX1
     58                 DCD     CAN1_SCE_IRQHandler       ; CAN1 SCE
     59                 DCD     EXTI9_5_IRQHandler        ; EXTI Line 9..5
     60                 DCD     TIM1_BRK_IRQHandler       ; TIM1 Break
     61                 DCD     TIM1_UP_IRQHandler        ; TIM1 Update
     62                 DCD     TIM1_TRG_COM_IRQHandler   ; TIM1 Trigger and Commutation
     63                 DCD     TIM1_CC_IRQHandler        ; TIM1 Capture Compare
     64                 DCD     TIM2_IRQHandler           ; TIM2
     65                 DCD     TIM3_IRQHandler           ; TIM3
     66                 DCD     TIM4_IRQHandler           ; TIM4
     67                 DCD     I2C1_EV_IRQHandler        ; I2C1 Event
     68                 DCD     I2C1_ER_IRQHandler        ; I2C1 Error
     69                 DCD     I2C2_EV_IRQHandler        ; I2C2 Event
     70                 DCD     I2C2_ER_IRQHandler        ; I2C2 Error
     71                 DCD     SPI1_IRQHandler           ; SPI1
     72                 DCD     SPI2_IRQHandler           ; SPI2
     73                 DCD     USART1_IRQHandler         ; USART1
     74                 DCD     USART2_IRQHandler         ; USART2
     75                 DCD     USART3_IRQHandler         ; USART3
     76                 DCD     EXTI15_10_IRQHandler      ; EXTI Line 15..10
     77                 DCD     RTCAlarm_IRQHandler       ; RTC Alarm through EXTI Line
     78                 DCD     USBWakeUp_IRQHandler      ; USB Wakeup from suspend
     79                 DCD     TIM8_BRK_IRQHandler       ; TIM8 Break
     80                 DCD     TIM8_UP_IRQHandler        ; TIM8 Update
     81                 DCD     TIM8_TRG_COM_IRQHandler   ; TIM8 Trigger and Commutation
     82                 DCD     TIM8_CC_IRQHandler        ; TIM8 Capture Compare
     83                 DCD     ADC3_IRQHandler           ; ADC3
     84                 DCD     FSMC_IRQHandler           ; FSMC
     85                 DCD     SDIO_IRQHandler           ; SDIO
     86                 DCD     TIM5_IRQHandler           ; TIM5
     87                 DCD     SPI3_IRQHandler           ; SPI3
     88                 DCD     UART4_IRQHandler          ; UART4
     89                 DCD     UART5_IRQHandler          ; UART5
     90                 DCD     TIM6_IRQHandler           ; TIM6
     91                 DCD     TIM7_IRQHandler           ; TIM7
     92                 DCD     DMA2_Channel1_IRQHandler  ; DMA2 Channel1
     93                 DCD     DMA2_Channel2_IRQHandler  ; DMA2 Channel2
     94                 DCD     DMA2_Channel3_IRQHandler  ; DMA2 Channel3
     95                 DCD     DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5
     96 __Vectors_End
     97 
     98 __Vectors_Size     EQU     __Vectors_End - __Vectors
     99 
    100                 AREA    |.text|, CODE, READONLY      ;定义以下汇编函数将调用C函数
    101 
    102 ; Dummy SystemInit_ExtMemCtl function                
    103 SystemInit_ExtMemCtl     PROC
    104                 EXPORT  SystemInit_ExtMemCtl      [WEAK]
    105                 BX      LR
    106                 ENDP
    107                 
    108 ; Reset handler routine
    109 Reset_Handler   PROC
    110                 EXPORT  Reset_Handler             [WEAK]     ;这里就是复位函数了
    111                 IMPORT  __main                               ;这个是定义一个外部的函数方便下边调用。这个函数是编译器自带的C环境运行函数名
    112 
    113 
    114  LDR     R0, = SystemInit_ExtMemCtl ; initialize external memory controller
    115                 BLX     R0
    116 
    117                 LDR     R1, = __initial_sp        ; restore original stack pointer
    118                 MSR     MSP, R1                   
    119 
    120                 LDR     R0, =__main               ;跳转上边定义的外部函数处执行。这里需要解释一下:这个“__main”函数不是我们在C语言中写的“main”函数。但他在创建了C函数的运行环境后会跳转到我们在C语言中写的“main”函数中去。
    121                 BX      R0                        ;这个就是跳转指令了
    122                 ENDP
    123                 
    124 ; Dummy Exception Handlers (infinite loops which can be modified)   以下为中断函数的伪定义,当外部有对应的中断函数时,这里的中断函数不起作用。

    作为一名资深码农,还是要具备专业英文阅读的能力.

    错误:A1163E:未知操作指令R0,预指令或者宏错误.

    也就是说R0未识别,记得以前看过博客好像是说

     1.ARM汇编指令不支持顶格写,否则不能识别

    2. 声明变量时不要有空格

    可能是缩进造成的问题,。

    就在前面加了一个空格。OK

    0个错误,0个警告,全部重新生成。

    The End!

    欢迎加入C#群:160441098

          嵌入式交流群:227262400

    作者:X先僧 出处:http://www.cnblogs.com/1hua1ye/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。 谢谢!
  • 相关阅读:
    iOS中多线程的实现方案
    初识多线程
    《文献管理与信息分析》第一讲学习总结
    《构建之法》第一章读书摘要
    Total Commander的初次体验
    学习《深入理解计算机系统》第一章摘要
    Vim编辑器的学习
    关于《文献管理与信息分析》的一些问题
    阅读《构建之法》后所产生的问题
    阅读《深入理解计算机系统(第三版)》产生的一些疑惑和困惑
  • 原文地址:https://www.cnblogs.com/1hua1ye/p/3752396.html
Copyright © 2020-2023  润新知