stm32
文章平均质量分 92
stm32学习记录
天地神仙
这个作者很懒,什么都没留下…
展开
-
【FreeRTOS】FreeRTOS 静态创建任务与删除
动态创建任务需要使用到函数,我们可以在 FreeRTOS 官网中查看此函数详细的文档,点击此处跳转根据上方的描述我们可以得知,此函数将会创建一个新任务,并将其添加到就绪任务列表中。在中,必须设置为 1,或者不定义(在这种情况下,它将默认为1),以便此函数可以使用。每个任务都需要用于保存任务状态的 RAM,并被任务用作其堆栈。如果使用创建任务,则从 FreeRTOS 堆中自动分配所需的 RAM。如果使用创建任务,则 RAM 由应用程序编写者提供,因此可以在编译时静态分配。根据上方的描述我们可以得知,原创 2023-06-27 23:16:54 · 750 阅读 · 0 评论 -
【FreeRTOS】FreeRTOS 动态创建任务与删除
动态创建任务需要使用到函数,我们可以在 FreeRTOS 官网中查看此函数详细的文档,点击此处跳转根据上方的描述我们可以得知,此函数将会创建一个新任务,并将其添加到就绪任务列表中。在中,必须设置为 1,或者不定义(在这种情况下,它将默认为1),以便此函数可以使用。每个任务都需要用于保存任务状态的 RAM,并被任务用作其堆栈。如果使用创建任务,则会==从 FreeRTOS 堆中自动分配所需的 RAM ==。如果使用。原创 2023-06-19 00:15:06 · 969 阅读 · 0 评论 -
STM32 GPIO 详解
GPIO全称:General Purpose Input Output,即通用输入输出端口,一般用来采集外部器件的信息或者控制外部器件工作,即输入输出。原创 2023-06-16 16:29:47 · 5143 阅读 · 2 评论 -
【FreeRTOS】STM32F407 移植 FreeRTOS(基于正点原子例程)
由于内存管理实验例程的 BSP 文件夹中可能不包含定时器的驱动文件,因此如果内存管理实验的 BSP 文件夹如果不包含 TIMER 文件夹,需要从定时器相关实验的 BSP 文件夹中拷贝一份 TIMER 到 FreeRTOS 移植基础工程当中,如从下列路径中找到 TIMER 文件夹拷贝到基础工程对应目录中,如下图所示。要修改的第二个地方就是导入的头文件,因为在串口的中断服务函数当中已经删除了 μC/OS 的相关代码,并且也没有使用到 FreeRTOS 的相关代码,因此将。如果是从官方下载的源码,注意版本为。原创 2023-06-06 17:33:03 · 4847 阅读 · 2 评论 -
STM32 接收串口数据并且存储 SD,Python 读取 SD 验证
在我们使用 STM32 或者 FPGA 采集数据的时候,需要将数据存储到SD卡中,因为数据是按照地址存储的,并且没有文件结构,所以不能直接用电脑的文件管理器读取,下面是一种读取数据的办法。原创 2023-06-01 14:15:00 · 2635 阅读 · 0 评论 -
串口通信简介
串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。本章主要讲解的是串口异步通信,异步通信是不需要时钟信号的,但是这里需要我们约定好两个设备的波特率。在串口通信的协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。比特率很好理解,我们来看看波特率,波特率被传输的是码元,码元是信号被调制后的概念,根据数据同步方式,通信又可分为同步通信和异步通信。原创 2023-05-31 23:22:14 · 2389 阅读 · 0 评论 -
STM32F4新建寄存器版本MDK(Keil5)工程(正点原子)
寄存器代码不需要调用SystemInit函数,因此修改Reset_Handler函数,去掉SystemInit调用,如下图(如果是复制正点原子例程的 CMSIS 则不需要修改,因为他已经修改好了)该文件夹用于存放编译器(MDK、 IAR 等)工程文件,我们主要用 MDK,为了方便区分, 我们在该文件夹下新建: MDK-ARM 文件夹,用于存放 MDK 的工程文件。首先新建一个文件夹作为项目的根目录,文件夹名字可以自定义,我使用 Template 作为名字,原创 2023-05-25 17:20:25 · 2183 阅读 · 2 评论 -
DMA控制两路DAC同时输出指定波形
DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。所以上升和下降都分别为 50 个点,从0V到3.3V再到0V,然后复制 x 的值到 stm32 程序中,由于要验证两路DAC的同时输入,可以修改一下数组的数据,然后给第二个数组,让两路DAC输出不一样的波形。由于数字和电压存在一一对应的关系,所以可以通过Python来进行批量化数据的生成,下面以三角波为例,由于设置的。原创 2023-05-25 11:40:50 · 1916 阅读 · 4 评论 -
STM32寄存器映射
在 STM32F4 中 0x4002 000C 是 GPIOA_PUPDR 的地址,但是我们直接看 0x4002 000C 并不知道他是谁的地址,虽然我们可以通过查找手册的方式找到,但是这样的方式实在的过于繁琐而且不利于我们后续开发程序,所以我们需要对寄存器地址命名,以便于我们看到新的名字就知道他的作用是什么。通过 c 语言的基础知识我们知道,结构体变量的名字实际代表的是结构体的首地址,而结构体内部成员是顺序排列的,在上面的手册中可以看到。首先我们要明确要寻找的地址是什么东西(总线?原创 2023-05-24 17:29:51 · 1711 阅读 · 0 评论 -
STM32配置ADC2(DMA)进行采集 DAC 输出-2
的例程,查看主函数找中和 DAC 相关的代码,发现下图红框中的函数只出现在了 DAC.c 中,于是我们将 DAC.c 添加到上一节的项目中,此时还不够,因为我们采用的是 HAL 库编程,还需要引入官方提供的和 DAC 相关的库函数才可以使用。中,然后运行上面的 Python 程序可以得到如下的结果(因为我设置的采样点很多,所以后面的都是噪声,但是确实是有两个三角波的波形,于是实验是成功的)如法炮制,我们可以得到按下 key1 的波形,如下图所示,我们可以清楚的看到有10个三角波,实验成功。原创 2023-04-29 22:43:27 · 2959 阅读 · 1 评论 -
STM32配置ADC2(DMA)进行采集 DAC 输出-1
根据上面的手册我们可以知道 HISR 和 HIFCR 是控制数据流 4-7 的,而我们现在输入的流是 2 所以对应的要修改为 LISR 和 LIFCR ,而这里的偏移量也是根据手册上标记的来设置的。如果不知道不知道 ADC2 对应的函数是什么,可以选中这个函数,然后右键 Go To 一下,一般来说相关配置的宏定义都会在弹出的文件的游标附近,可以自行找一下,或者是根据他的命名规则直接来修改也可以(一般是不会有问题,有问题了再说)对应的我们在adc.h中找到相关的配置,这里开启的是 ADC1 的时钟。原创 2023-04-28 17:28:43 · 3284 阅读 · 0 评论 -
STM32F4 HAL库使用DMA进行ADC采样实时发送波形到串口显示(包含傅里叶变换)
按下STM32F4的KEY0按键,通过外部中断的方式对按键进行检测,然后开启一次带DMA的固定点数的ADC采集,采集完成后在DMA的中断发送采集到的数据,然后清空数据区准备下一次的按键中断。电脑接受到串口数据后对数据进行简单处理和傅里叶变化,然后实时显示在电脑上。目前是21M的时钟,一个时钟周期是0.047us,采集3个周期,转化12.5个周期就是15.5个周期。这里的傅里叶变化只会显示最后的 POINT 个点的傅里叶变化情况。采样率为:1/0.714=1.37268M。原创 2023-04-27 10:28:43 · 5238 阅读 · 8 评论 -
STM32按键实验——GPIO作为输入
一、硬件连接部分stm32战舰版的硬件连接如上图所示KEY_UP一端连接到的VCC,另外一端连接到PA0,那么我们在读取电平的时候只要读取到PA0的电平为高,就说明KEY_UP被按下了。其他三个按键的一端接地,那么对应的GPIO口读取到低电平就说明这三个按键被按下了。二、GPIO初始化void KeyInit(){ GPIO_InitTypeDef GPIO_InitTypeStruct; GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_IPU;//输入上拉原创 2020-07-11 00:19:51 · 2857 阅读 · 0 评论 -
STM32F4探索者LED灯闪烁-库函数
原理我们可以看到两个LED是和电阻串联然后接在VCC上的,共阳极,另一端的引脚分别接在PF9和PF10。所以我们只需要控制PF9和PF10的高低电平就可以控制LED的亮和灭。低电平为亮,高电平为灭。我们要先了解几个函数:1个初始化函数:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)//初始化一...原创 2019-05-15 13:45:48 · 2432 阅读 · 2 评论