嵌入式开发
文章平均质量分 89
嵌入式开发经验分享
yhjtzz
这个作者很懒,什么都没留下…
展开
-
基于stm32f407实现定时器触发ADC+DMA双通道采集(库函数实现)
多通道采集数据时,为了使采样过程尽可能不占用CPU资源,采用定时器触发的多通道ADC扫描采样,利用ADC+DMA可实时,有序的转存多通道数据至程序内存(数组),再加一个定时中断,用来定时读取内存中的数据。实现双通道采集时,使用ADC(模数转换器)和DMA(直接内存访问)结合的方式可以提高采集效率。而为了触发ADC的采样和将采样数据传输到指定内存区域,通常需要配置定时器。配置步骤:配置ADC通道:设置ADC的工作模式、采样率、采样精度等参数,并选择要使用的ADC通道。原创 2023-11-22 11:41:46 · 3337 阅读 · 0 评论 -
STM32F407使用TIM DMA DAC实现播放FLAH中的WAV音乐
该示例实现从flash读取音频数据,提供DMA搬运DAC输出到扬声器。包括flash读写、DMA、DAC、WAV音频解析、音频文件制作(python生成)、flash烧录固件制作等原创 2023-08-30 13:08:05 · 2111 阅读 · 2 评论 -
一种基于时基的任务调度机制
数据缓冲区的数据结构可以有很多种各种方法都有利有弊,可以根据现实情况选择,我这里选用的是环形缓冲区,调度机应用该缓冲区的优点时不容易误操作,可以将每次任务调度的逻辑隔离开来,缺点是,调度执行条件受先进先出限制。如下图所示,我的思路是创造一个时基,然后建立一个缓冲区,将我们要执行的任务(函数)加上时间戳塞进缓冲区,然后设计一个时间比较器,去比较任务的时间戳,如果到点了,就执行这个函数。上述写法有个显然的弊端,即程序运行过中的等待会消耗大量资源,导致程序卡顿,此时显然有个简单的处理方法,就是状态机编程。原创 2023-08-23 17:49:31 · 108 阅读 · 1 评论 -
Stm32407串口1空闲中断+DMA收发(基于标准库实现)
基于STM32F407提供一种串口空闲中断+DMA接收的方式,通过库函数编程实现。原创 2023-04-23 11:14:07 · 5657 阅读 · 2 评论 -
Keil5生成hex和bin文件的方法
STM32 ST-LINK Utility是针对STM32全系芯片进行编程(读、写、擦除、选项字)的一款工具。生成bin文件的工具就是keil安装目录下的 “formelf.exe”,位置参考如下图所示。ST-LINK Utility不仅提供图形化界面(GUI),也提供命令行命令行界面(CLI)。使用STM32 ST-LINK Utility进行烧录。点击魔术棒进行如下设置。原创 2023-03-30 19:02:43 · 4626 阅读 · 2 评论 -
数据接收处理之环形缓冲区
环形缓冲区是一个先进先出(FIFO)的闭环的存储空间。通俗的理解为,在内存中规划了一块连续等分的环形内存,然后分别通过写指针和读指针对缓冲区的数据进行读写。而实际上,计算机内存的空间位置不一定是环形的,所以我们可以开辟一段连续的内存,然后将其首尾相连,如下图所示:存储数据:当每有一个数据需要存储时,就存储在Write所指向的位置,存储完毕后Write将指向下一个位置。读取数据:每当读取一个数据时,将读取Read指向的位置,当读取完毕后Read指向下一个位置。定义结构体类型用于开辟环形缓冲区。原创 2023-04-22 16:12:27 · 707 阅读 · 4 评论