继前段时间在stm32f103上试运行了RTT,现在把它放到stm32f407上跑起来:
1,准备工作
a.RTT v2.1.0 软件包
b.MDK 4.0以上IDE环境,我这次用的是4.73.0.0
c.一块stm32f407ve的主板,外部晶振8MHz
d.st-link
2,软件上修改的东西并不多,只需要将示例中的25MHz外部晶振更换为主板上的8MHz即可;
cortex-M4的ST库跟M3的库基本一致,修改stm32f4xx.h头文件即可,如下:
—找BSP对应的目录下,进入到\BSP\stm32f40x\Include\ 绝对目录中,修改对应的文件大概101行,注释掉原来的那一行,新增一行更改为8MHz即可;
#if !defined (HSE_VALUE)
//#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the B2 External oscillator in Hz */
#endif /* HSE_VALUE */
因为RTT需要的最大SRAM限制为64KB,F407VE内部SRAM 192KB,故不需要调整;
编译&下载&运行;
这里需要说明的是,stm32f40x里面RTT的默认代码映射finsh在UART2,且波特率为115200,8N1,
如下:
// <o> Console on USART: <0=> no console <1=>USART 1 <2=>USART 2 <3=> USART 3
// <i>Default: 1
#define STM32_CONSOLE_USART 2
/* Default config for serial_configure structure */
#define RT_SERIAL_CONFIG_DEFAULT \
{ \
BAUD_RATE_115200, /* 115200 bits/s */ \
DATA_BITS_8, /* 8 databits */ \
STOP_BITS_1, /* 1 stopbit */ \
PARITY_NONE, /* No parity */ \
BIT_ORDER_LSB, /* LSB first sent */ \
NRZ_NORMAL, /* Normal mode */ \
RT_SERIAL_RB_BUFSZ, /* Buffer size */ \
0 \
}
连接上串口,打印信息出来,输入RTT finsh命令进行交互,说明她已经跑起来了!
(全文完)