1、配置选用的串口
在kconfig文件中增加ENV的串口选项,这边选择的是uart2
menuconfig BSP_USING_UART
bool "Enable UART"
default y
select RT_USING_SERIAL
if BSP_USING_UART
config BSP_USING_UART2
bool "Enable UART2"
default n
config BSP_UART2_RX_USING_DMA
bool "Enable UART2 RX DMA"
depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
default n
endif
在ENV中选择上UART2
按照Kconfig的配置,应该只有UART2,上图是我截取的其他工程,所以有多个串口,这个不影响。
2、配置串口对应的管脚
打开对应的cunbemx文件,将串口2配置到对应的管脚,我这边选择的是PA2和PA3
然后重新生成cubemx的工程文件,现在配置已经完成
3、简单测试
#define SAMPLE_UART_NAME "uart2"
static rt_device_t serial;
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
char str[] = "hello RT-Thread!\r\n";
static int uart_test(void)
{
serial = rt_device_find(SAMPLE_UART_NAME);
config.baud_rate = BAUD_RATE_9600;
config.data_bits = DATA_BITS_8;
config.stop_bits = STOP_BITS_1;
config.bufsz = 128;
config.parity = PARITY_NONE;
rt_device_control(serial, RT_DEVICE_CTRL_CONFIG, &config);
rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
rt_device_write(serial, 0, str, (sizeof(str) - 1));
return 0;
}
补充
在串口使用时,在串口接收回调函数或者中断中谨慎使用rt_kprintf等占用时间长的内容,否则会造成程序hardfault。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)