Keil ARM Compiler 6 #pragma sorunu

Mucit23

Üye
Katılım
7 Ekim 2022
Mesajlar
79
Selamlar

Keil ARM Compiler 6 ile birlikte sanırım #pragma tanımları kaldırılmış. Benim Eskiden ARM Compiler 5 ile derlenen kodlarımı Compiler 6 ile derlediğimde aşağıdaki hataları Alıyorum.


Kod:
../Core/Src/printf.c(21): error: '#pragma import' is an Arm Compiler 5 extension, and is not supported by Arm Compiler for Embedded 6 [-Warmcc-pragma-import]
   21 | #pragma import(__use_no_semihosting_swi)
      |         ^
../Core/Src/printf.c(28): error: redefinition of '__FILE'
   28 | struct __FILE { int handle; /* Add whatever you need here */ };
      |        ^
C:\Users\ferhatyoleem\AppData\Local\Keil_v5\ARM\ARMCLANG\bin\..\include\stdio.h(119): note: previous definition is here
  119 | struct __FILE {
      |        ^
2 errors generated.

Bu hataların çözümünü bilen var mı?
 
Mevcut Keil kurulumunuza Arm Compiler 5 i de ekleyerek sorunu çözebilirsiniz.



resim.png
 
Printf.c dosyamı güncelleyerek çözdüm.

Kod:
#include <stdio.h>
#include <time.h>
#include <rt_misc.h>
#include <stm32f1xx_hal.h>

#define __ARM_USE_NO_SEMIHOSTING

extern UART_HandleTypeDef huart3;   // CubeMX ile olusturulmus global UART handle

FILE __stdout;
FILE __stdin;

int fputc(int ch, FILE *f) {
    HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
    return ch;
}

int fgetc(FILE *f) {
    uint8_t ch;
    HAL_UART_Receive(&huart3, &ch, 1, HAL_MAX_DELAY);
    return ch;
}

int ferror(FILE *f) {
    return EOF;
}

void _ttywrch(int ch) {
    HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
}

void _sys_exit(int return_code) {
    while (1);
}

ARM Compiler 6 için bu dosya kullanılması gerekiyor.
 

Forum istatistikleri

Konular
8,874
Mesajlar
144,292
Üyeler
3,563
Son üye
Synthbeyi

Son kaynaklar

Back
Top