一、环境准备
电脑系统:Windows 10 专业版 22H2
IDE:VScode
测试硬件:AG32VF407
二、测试步骤
1、测试目的
启用printf功能
2、查看原理图
串口属于外设,找到外部Pin号
如图:Tx-68 Rx-69
3、查找内部信号命名
AGRV2K 逻辑设置.pdf: (访问密码: 1666)s
上面pdf中查找 Function_Pin :
UART0_UARTRXD UART0_UARTTXD
UART1_UARTRXD UART1_UARTTXD
UART2_UARTRXD UART2_UARTTXD
UART3_UARTRXD UART3_UARTTXD
UART4_UARTRXD UART4_UARTTXD
有5个串口,只占用内部信号,外部引脚没有固定,因此都可以使用。按照例程一步步看吧。
另外要实现ISP功能下载,只能用UART0.
4、修改ve
SYSCLK 200
BUSCLK 100
HSECLK 8
GPIO4_1 PIN_31 # LED_D2
GPIO4_2 PIN_32 # LED_D3
UART0_UARTRXD PIN_69
UART0_UARTTXD PIN_68
5、修改platformio.ini
①logger_if = UART0
②build_flags = -DBAUD_RATE=115200
用的版本被注释了,需要取消注释,并顶格。
添加字段,-D表示为define,BAUD_RATE=115200表示波特率为115200
保存,等待环境自动生成相应文件
6、编译下载查看效果
图示内容在代码位置:
7、替换其他串口
将UART0替换为UART1,实现printf功能。
在上面的基础上,只需要将ve文件链接信息修改下,以及ini文件中logger_if修改下
SYSCLK 200
BUSCLK 100
HSECLK 8
GPIO4_1 PIN_31 # LED_D2
GPIO4_2 PIN_32 # LED_D3
//UART0_UARTRXD PIN_69
//UART0_UARTTXD PIN_68
UART1_UARTRXD PIN_69
UART1_UARTTXD PIN_68
# Monitor with printf through UART
[setup_monitor]
# Logger interface. Can be any internal UART. Note that the TX pin is decided by the .ve file in setup_logic section.
logger_if = UART1
8、不启用printf
①测试发现将ini文件中的logger_if注释掉就行,暂时发现代码内宏定义LOGGER_UART同步变为未定义状态,未找到logger_if与LOGGER_UART相关的部分代码(有找到的同学,也下面评论下哈,谢谢!)。
初始化部分无效
②也可以将ve文件中信号与引脚链接断开,有点自欺欺人吧,内部还在运行,只是没有引脚联通外部
③将所有printf注释掉,或者直接修改printf,不过printf作为基础函数,不是weak函数,修改后其他工程估计也不能用了。