stm32在rt-thread上使用uart4实现gps的输出
来源:互联网 发布:极路由网络唤醒 编辑:程序博客网 时间:2024/06/16 04:09
1. 使用之前创建的工程,应该是没有uart4的,依葫芦画瓢添加uart4串口,很容易就实现了中断接收(INT_RX)gps的数据
这里有个坑,当gps吐出的数据大时,打印不全且含有"\0",修改RT_CONSOLEBUF_SIZE的值
2. 进一步想实现gps的dma发送和接收,把rt-thread的串口逻辑看了一遍,总算明白了,里面的dma_transmit只有接口没有实现,这尼玛.. 后面参考了公司开发写的一些代码,不使用这个接口了,自己实现.
3. 还有个坑,gps吐出频率为200ms时,会出现空闲中断不及时的问题,找了很久,最后发送gps的波特率是9600,每秒1200字节,200ms 240个字节,如果gps全吐出会大于240字节.. 坑呀..
代码下载地址:http://pan.baidu.com/s/1i46tPVR
串口和dma的配置步骤简单说下(按照rt-thread来的,个人理解)
1. RCC_Configuration();
时钟配置 --> 开启串口时钟和IO的时钟
2. GPIO_Configuration();
配置usart的IO模式和speed
3. NVIC_Configuration(&uart1);
配置usart中断
4. stm32_configure()
usart串口的初始化
如使用DMA发送和接收
1. NVIC_DMA_Config();
开启DMA的时钟
配置DMA发送和接收的中断 --> 比如dma接收为循环接收,达到buff_size上限时将会产生一次中断
2. DMA_Configuration();
DMA发送和接收的配置
usart串口dma发送和接收的理解
1. usart串口的中断与dma的中断互不干扰
2. 使用dma发送,发送完成后,进入dma发送的中断函数 DMA2_Channel4_5_IRQHandler
3. 使用usart中断发送 --> 不支持吧,默认是轮询发送模式
4. 使用dma接收,串口使能空闲中断,接收完成后,串口进入中断函数 UART4_IRQHandler; dma进入中断函数(如有必要已配置) DMA2_Channel3_IRQHandler
UART4_IRQHandler中处理rx_buffer的get_index和put_index,以便读取
5. 使用usart中断接收,进入stm32_getc,读取内容; 进入serial_ringbuffer_putc 保存内容到rx_buffer,持续去获取直到跳出循环
- stm32在rt-thread上使用uart4实现gps的输出
- RT—thread 上的1588协议在stm32上实现代码及说明
- stm32在rt-thread上的SysTick(系统定时器)
- stm32在rt-thread上的RTC(实时时钟)
- stm32在rt-thread上的PWR(电源管理)
- RT-Thread在STM32F100C8上的移植
- 如何使用jlink+gdb在stm32上调试fans-rt
- 在龙芯1c上使用rt-thread统一标准的spi接口
- 在龙芯1c上使用RT-Thread统一标准的i2c接口
- 在龙芯1c上使用RT-Thread统一标准的gpio接口
- uip 移植在rt-thread上的源码
- RT Thread 在STM32f10x 平台上的移植
- STM32 RT-Thread
- 在龙芯1c上用RT-Thread上的lwip NETCONN接口实现socket编程
- 使用Semaphore和Mutex实现Readers-writer lock (favor writer)【STM32\RT-Thread\读写锁】
- RT-Thread LwIP的使用
- STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和不能接收数据问题讨论
- 在KEIL下搭建基于 STM32 和 rt-thread 的开发环境
- Struts2配置文件
- mysql死锁,可视化工具无法操作
- HDU 3336 Count the string 所有前缀在串中的出现总次数
- TCP的三次握手和四次挥手的过程?三次握手改成两次或者四次可以吗为什么?
- JavaWEB中request.getRequestURI()、getRequestURL()、getContextPath()、getServletPath()区别
- stm32在rt-thread上使用uart4实现gps的输出
- java设计模式综合项目实战
- MySQL事务隔离级别
- WebViewJavascriptBridge
- Linux 删除目录及其子目录指定类型文件
- Spring MVC_10.1:Dispatcher
- 代码中的特殊注解 -- TODO、FIXME、XXX的作用
- HorizontalScrollView布局加底部导航
- listView 多条目加载