利用 串口+DMA+IDLE中断+无锁队列,提高串口接收效率 接收会产生的中断有三种: - 串口空闲中断:正常接收(小于 dma 设置的 buffer_size 时) - DMA传输完成中断:刚好为 dma 设置的 buffer_size 时,不过一般也不会出现, 如果出现了的话也应该增加缓冲区大小 - DMA的半传输中断:(这里没有用到,如果内存有限制可以自行开启) 注意: - 环形队列的缓冲区要设置为 2 的幂次方的大小 - 串口中断一般可以设置为最低优先级,因为是 DMA后台自动接收的, 所以中断优先级最低并不会丢失数据 - 用户缓存 buff_read 可以随意设置,没有限制,但为了节省内存, 一般小于等于 DMA 的接收缓存 usart_buff_rx
2022-10-19 14:03:59 7KB stm32 串口通信 队列
1
基于STM32写的外设到外设的dma传输程序,方便移植,已测试完毕
2022-10-18 18:00:16 7.28MB stm32dma STM32F103 dma DMA外设到外设
1
很好的AD过采样技术文档,很值得一看。很好的AD过采样技术文档,很值得一看。
2022-10-17 15:56:29 260KB AD过采样
1
stm32f107实现ADC模数转换,含代码,及启动文件,库函数,完整的工程文件!!!
2022-10-17 14:33:39 619KB stm32 ADC 模数转换
1
RTC芯片PCB8563驱动,C源代码,带有UNIX时间戳和北京时间互转功能。
2022-10-13 16:52:55 4KB RTC PCB8563 UNIX时间戳 北京时间
1
已封装成一个函数,调用即可,直接返回电压值(float) 第1次调用,耗时2.5ms, 后面每次调用,耗时25us; 示例工程环境,KEIL+STM32F103VE+标准库
2022-10-11 22:31:29 4.98MB ADC STM32ADC ADC采集
1
stm32f103运行FreeRTOS实现串口DMA发送和DMA不定长接收。 驱动OLED屏和空气检测传感器PMS5003ST.
2022-10-10 17:41:35 557KB stm32 USART(DMA) 不定长接收
1
对应我的博客《Zedboard学习(五)----Linux下调试dma驱动》,主要是对于Zynq Linux DMA 的字符设备驱动代码与测试代码,可以帮助学习Zynq平台的嵌入式开发。
2022-10-10 14:16:59 3KB zynq Linux dma
1
涉及到ADC模拟量采集以定时器中断的方式定频率触发,OLEDSPI方式底层驱动,全部均是使用HAL库实现完成,底层采用CubeMX生成,只是软件部分,可以直接给ADC输入信号发生器产生的信号进行测试
2022-10-08 22:02:38 24.27MB stm32 HAL CubeMX ADC
1
采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别位PH10,PH11,PH12 USART1,波特率115200,无校验位,1位停止位 PA9->TX,PA10->RX,开启TC和IDLE中断 仿printf发送,DMA式收发数据 串口空闲中断触发后,在中断服务函数中重新填写DMA的剩余传输数据数量寄存器的值,保证下一次接收数据是从串口接收缓冲区的第一个字节接收 配备了CRC校验,使用CRC-32(以太网)多项式:0x4C11DB7 KEIL5下载配置有FLASH与SRAM
2022-10-07 16:28:10 598KB stm32 c语言
1