| 
极海APM32F411V Tiny开发板评测 GCC Makefile Pyocd 工程模板建立一、移植前的准备1. 准备目标硬件(开发板/芯片/模组) 本教程将使用极海APM32F411V Tiny开发板进行示例移植。调试ARM Cortex M核还需要仿真器,如果您的开发板或者芯片模组没有板载仿真器,就需要连接外置的仿真器,如DAPLink之类的。 2.准备编译器环境1)Windows or Linux (Windows,linux基本环境流程差不多,可能需要修改部分Makefile代码) 2)Jlink、Daplink、Wch-Link烧录器 3)GNU Arm Embedded Toolchain交叉编译器 4)Mingw-w64 GCC for Windows 64  3.Windows环境搭建GNU Arm Embedded Toolchain交叉编译器安装进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件 下载链接: Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer  将下载好的压缩包文件解压在gcc-arm-none-eabi”文件夹中,并记住文件内“bin”文件的路径,后续需添加到系统环境变量Path中。 添加完环境变量后,进行测试,检测是否安装好。 安装Mingw-w64 GCC点击链接进入到SourceForge官网,往下翻可以找到很多版本的下载链接,选择红色框内型号即可,不同前后缀的具体差异请参考: MinGW gcc下载链接及sjlj、dwarf、seh异同以及gcc安装AMDDMA的博客-CSDN博客seh和sjlj 下载链接: MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net  同样,将下载好的文件解压到“gcc-arm-none-eabi”文件夹下,记住目录下的“bin”文件路径 进入“bin”文件内找到“mingw32-make”应用程序文件,复制一份并重命名为“make”。这么做有利于在命令行执行make指令,而不是输入mingw32-make。 添加完环境变量后,进行测试,检测是否安装好。                        3.创建工程,编写Makefile        
 
编译 执行make命令 4.Linux环境搭建安装GNU Arm Embedded Toolchain交叉编译器 进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件 ,选择linux版本 也可以直接在linux系统中下载,这里使用的Ubuntu 22.04  sudo apt-get install gcc-arm-none-eabi下载完成查看 arm-none-eabi-gcc -v修改Makefile 注释GCC_PATH 修改 clean命令 make   
  
 5.下载程序       
- /*!
 
 - * [url=home.php?mod=space&uid=247401]@brief[/url]       Redirect C Library function printf to serial port.
 
 - *             After Redirection, you can use printf function.
 
 - *
 
 - * @param       ch: The characters that need to be send.
 
 - *
 
 - * @retval     The characters that need to be send.
 
 - *
 
 - * @note
 
 - */
 
 - int __io_putchar(int ch)
 
 - {
 
 -    /* send a byte of data to the serial port */
 
 -    USART_TxData(DEBUG_USART, ch);
 
 - 
 
 -    /* wait for the data to be send */
 
 -    while (USART_ReadStatusFlag(DEBUG_USART, USART_FLAG_TXBE) == RESET);
 
 - 
 
 -    return ch;
 
 - }
 
 - 
 
 - /*!
 
 - * @brief       Redirect C Library function printf to serial port.
 
 - *             After Redirection, you can use printf function.
 
 - *
 
 - * @param       file: Meaningless in this function.
 
 - *
 
 - * @param       *ptr: Buffer pointer for data to be sent.
 
 - *
 
 - * @param       len: Length of data to be sent.
 
 - *
 
 - * @retval     The characters that need to be send.
 
 - *
 
 - * @note
 
 - */
 
 - int _write(int file, char* ptr, int len)
 
 - {
 
 -    int i;
 
 -    for (i = 0; i < len; i++)
 
 -   {
 
 -        __io_putchar(*ptr++);
 
 -   }
 
 - 
 
 -    return len;
 
 - }
 
  
 
  |