RT-Thread 串口的使用

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)
{
	/* step1:查找串口设备 */
	serial = rt_device_find(SAMPLE_UART_NAME);

	/* step2:修改串口配置参数 */
	config.baud_rate = BAUD_RATE_9600;        //修改波特率为 9600
	config.data_bits = DATA_BITS_8;           //数据位 8
	config.stop_bits = STOP_BITS_1;           //停止位 1
	config.bufsz     = 128;                   //修改缓冲区 buff size 为 128
	config.parity    = PARITY_NONE;           //无奇偶校验位

	/* step3:控制串口设备。通过控制接口传入命令控制字,与控制参数 */
	rt_device_control(serial, RT_DEVICE_CTRL_CONFIG, &config);

	/* step4:打开串口设备。以中断接收及轮询发送模式打开串口设备 */
	rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
	/*发送数据*/
	rt_device_write(serial, 0, str, (sizeof(str) - 1));
	return 0;
}

补充

在串口使用时,在串口接收回调函数或者中断中谨慎使用rt_kprintf等占用时间长的内容,否则会造成程序hardfault。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值