平台:
正点原子stm32f103 mini开发板 GD32F103C8T6芯片
HAL库/STM32CUBEMX学习记录
1. 在stm32cubeMX中找到合适的芯片
stm32f103rct6和gd32f103rct6引脚相同,故使用stm32f103rct6开始工程
2. 时钟配置
如图配置时钟使其匹配本工程所接的外部晶振,并配置系统工作时钟至72MHz
3. RCC配置
从晶振获取
4. SYS配置
如果需要通过ST-LINK进行烧录,则选择串联连接
5. 引脚配置
如图所示,根据左侧工具栏提示以及匹配板子原理图,配置GPIO,定时器,串口,DMA等工程中所需的配置。
问题记录
因工程需要,调试串口被安排至UART5
当利用STM32CUBEMX配置完成硬件基础配置后,测试串口5输出为乱码;无论打印中文或英文。
排除波特率问题,排除中英文编码问题,排除接线问题,排除外部晶振问题。
最后定位问题为调试串口时接的是RS232(DB9)线,而USART3,UART4,UART5未经过TTL转232电平转换。
将调试工具从RS232(DB9)线换为USB-to-TTL模块后解决问题。
FreeRTOS移植
按照正点原子提供的STM32F1 FreeRTOS教程进行移植
问题:函数重复定义
..\OBJ\FreeRTOS.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by port.o and stm32f10x_it.o).
..\OBJ\FreeRTOS.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by port.o and stm32f10x_it.o).
将stm32f10x_it.h以及stm32f10x_it.c中的PendSV_Handler和SVC_Handler函数屏蔽即可
问题: "include FreeRTOS.h must appear in source files before include task.h"
解决方法:
需在task.h中首先包含FreeRTOS.h