rtthread 串口dma接收_RT-Thread 串口DMA使用笔记--STM32F207

RT-Thread学习笔记八

--------USART DMA方式发送

老规矩,首先说一下我的配置

STM32F207IGT6   MDK   RTT 1.1.0

使用UART2作为finsh组件,UART3作为串口输出

/* register uart2 */

rt_hw_serial_register(&uart2_device,"uart2",RT_DEVICE_FLAG_RDWR| RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,&uart2);

配置成中断接收,数据流发送。

/* register uart3 */

rt_hw_serial_register(&uart3_device,"uart3",RT_DEVICE_FLAG_RDWR| RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX,&uart3);

配置成中断接收,DMA发送

相信大家已经能够正常使用finsh组件了,所以小弟就不献丑了,呵呵!

shaolin前辈写的finsh的使用

连接1

rt-thread下的串口驱动程序分析

连接2

主要写一下UART3 使用DMA发送

#ifdef RT_USING_UART3

struct stm32_serial_int_rx uart3_int_rx;

struct stm32_serial_dma_tx uart3_dma_tx;

struct stm32_serial_device uart3 =

{

USART3,

&uart3_int_rx,

&uart3_dma_tx

};

struct rt_device uart3_device;

#endif

我仍然按照usart.c中rt_hw_usart_init()的顺序进行分析

/************************************ ******************************/

首先时钟配置RCC_Configuration();

#ifdef RT_USING_UART3

/* Enable USART3 and GPIOC clocks */

RCC_AHB1PeriphClockCmd(UART3_APBPeriph_GPIOX, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APBPeriph_UART3, ENABLE);

RCC_AHB1PeriphClockCmd(RCC_APBPeriph_UART3_DMA,ENABLE);

#endif

配置参数时都采用宏定义,如UART3_APBPeriph_GPIOX,RCC_APBPeriph_UART3,之所以不直接采用ST官方的参数,是因为这样不仅方便以后程序的移植,而且不容易出错。

#define UART3_GPIO_RX                GPIO_Pin_11

#define UART3_GPIO_TX                GPIO_Pin_10

#define UART3_GPIO                        GPIOC

#define UART3_APBPeriph_GPIOX        RCC_AHB1Periph_GPIOC

#de

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值