创建工程首先要加入宏定义
1. USE_HAL_DRIVER,
表明用HAL库来操作stm32单片机底层。
2. STM32H750xx,
表明单片机类型为H750。
3. __GUNC__
表明用的是V6 的complier。
如果用网上四处可见的v5版重定向例子,则会报错
../Source/sys/usart/usart.c(23): error: redefinition of '__FILE'
struct __FILE
d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h(119): note: previous definition is here
struct __FILE {
原因是 v6与v5的不兼容。
更正方法为以下:
__asm (".global __use_no_semihosting\n\t");
void _sys_exit(int x) //避免使用半主机模式
{
x = x;
}
//__use_no_semihosting was requested, but _ttywrch was
void _ttywrch(int ch)
{
ch = ch;
}
void _sys_command_string(char* cmd,int len)
{
len =len;
}
FILE __stdout;
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((UART5->ISR&0X40)==0);//循环发送,直到发送完毕
UART5->TDR=(u8)ch;
return ch;
}