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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM