本帖最后由 dirty 于 2024-1-20 00:25 编辑
本篇讲述复旦微FM33FT0A 系列开发环境搭建及调试用到的日志串口printf重定向。
一.开发环境准备
这阶段需要做些资料准备,复旦微资料官网上会找到点,需要用到较为全面的资料在其官方论坛上【1】,特此分享。
1.SDK下载
这里下载使用V1.7.1.5版本SDK。用 闪灯示例 工程 作为初始工程基础。
2.芯片pack包安装
FM33FT0A是基于ARM Cortex-M0核,这里用大家熟知的Keil开发环境。首先需要安装芯片pack包,在Keil官网是找不到芯片型号匹配的,但在官方论坛资料里是有的,进过了一段寻觅可算找到,这里安装FMSH.FM33FT0XXA_DFP.1.0.5.pack,安装好后,打开工程,在Options->Device选项卡下可看到适配了开发板MCU型号。如下图
图1:芯片型号配置
3.调试烧录配置
连上开发板USB-TYPEC并插入电脑USB,在设备管理器可看到 CMSIS-DAP 设备,其已板载,我们在Keil里做相应配置。在Options->Debug选项卡选择CMSIS-DAP Debugger,如下图所示
图2:调试器选择
点击进入Settings进行配置 ,在Debug选项卡下Port选SW,在FLASHdownload选项卡下初次加载编程烧录算法FLM文件,其可在Keil安装路径下(参考路径Keil_v5\Packs\FMSH\FM33FT0XXA_DFP\1.0.5\Flash)下找到,加载上后点击OK确认。
图3:编程烧录文件加载
至此,开发环境搭建与工具配置准备完毕。
二.printf重定向串口日志
查阅了整个SDK,没有发现关于串口打印方面,特此在 闪灯示例 工程上予以添加此功能。在开发调试阶段串口日志是经常用到的。
1.选择使用Keil带有的MicroLIB,设置Options->Target选项卡下 如下图勾选上
图4:勾选MicroLIB
2.串口初始化
这里根据开发板接口使用串口UART4,引脚TX--PB3,RX--PB2. 在mf_config.c里添加如下代码,进行UART4串口初始化
/**
* @brief UART4 Initialization function
* @param void
* @retval None
*/
void MF_UART4_Init(void)
{
FL_UART_InitTypeDef uart = {0};
FL_GPIO_InitTypeDef gpio = {0};
FL_GPIO_StructInit(&gpio);
gpio.pin = FL_GPIO_PIN_2 | FL_GPIO_PIN_3;
gpio.mode = FL_GPIO_MODE_DIGITAL;
gpio.pull = FL_GPIO_BOTH_DISABLE;
gpio.outputType = FL_GPIO_OUTPUT_PUSHPULL;
gpio.remapPin = FL_GPIO_PINREMAP_FUNCTON1;
FL_GPIO_Init(GPIOB, &gpio);
uart.baudRate = 115200;
uart.dataWidth = FL_UART_DATA_WIDTH_8B;
uart.parity = FL_UART_PARITY_NONE;
uart.stopBits = FL_UART_STOP_BIT_WIDTH_1B;
uart.transferDirection = FL_UART_DIRECTION_TX_RX;
FL_UART_Init(UART4, &uart);
FL_UART_ClearFlag_TXShiftBuffEmpty(UART4);
FL_UART_EnableIT_TXShiftBuffEmpty(UART4);
}
/**
* @brief The application entry point.
* @retval int
*/
void MF_Config_Init(void)
{
/*FUNCTION CALL*/
MF_UART4_Init();
}
3.在main.c添加重定向fputc函数如下
/* retarget the C library printf function to the USART */
int fputc(int ch, FILE *f)
{
FL_UART_WriteTXBuff(UART4,(uint8_t)ch); /* 将发送数据写入发送寄存器 */
while(FL_UART_IsActiveFlag_TXBuffEmpty(UART4) != 0x01UL){}; /* 等待发送完成 */
return ch;
}
4.在main()函数里初始化串口并打印日志
int main(void)
{
//......
MF_Config_Init();
printf("Config debug uart finish\r\n");
printf("RGB LED flick\r\n");
//......
}
5.编译烧录运行
开发板接上USB TYPE-C线,连接好串口线并打开串口助手,接上12V DC电源并上电。编译工程并烧录。开发板连接准备如下图
图5:开发板硬件连接
可以看到开发板RGB灯颜色切换闪烁(效果见附件视频),串口有日志输出,如下图所示
图6:串口日志输出
至此,开发环境搭建完毕与printf重定向串口日志实现。现将工程附件分享,方便有需要的使用.
RGB_FLICK
【1】FM33FT0A 系列资料
http://www.fmdevelopers.com.cn/forum.php?mod=viewthread&tid=14737