STM32
文章平均质量分 94
Sense_long
这个作者很懒,什么都没留下…
展开
-
嵌入式知识点总结——串口、RS232、RS485
串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。原创 2023-09-06 19:36:48 · 728 阅读 · 1 评论 -
步进电机简单使用:STM32 PWM输出固定数目的脉冲数(基于CubeMX)
本文讲解步进电机驱动原理,以及如何通过CubeMX实现快速配置PWM来输出固定数目个脉冲原创 2023-09-01 12:35:15 · 7140 阅读 · 5 评论 -
编码器测速原理与实现
原理图如上,一个小周期内AB两相分别各有一个上升沿和下降沿,只需要在AB两相的每个上升沿、下降沿进行采集,这样就实现了四倍频技术,即如果编码器分辨率为p,则现在编码器转动一圈就可以采集到4p个脉冲。定时器中断服务函数中读取采集到的脉冲数,TIM2的计数值为0-65535,采用short int类型对其强制类型转换,若TIM2计数器值为0 ~ 32767,则强制转化后的值仍为0 ~ 32767,电机正转;编码器正反转时,脉冲波形如上图所示,我们可以先定义pulse_num来对脉冲进行计数。原创 2023-02-25 14:01:51 · 6906 阅读 · 2 评论 -
STM32CubeMX配置ADC采样(轮询、中断、DMA)
STM32CubeMX能够极大减小STM32外设配置的工作量,本文介绍如何利用STM32CubeMX配置ADC采样,记录了作者学习过程中遇到的问题及解决办法原创 2023-01-20 18:54:08 · 20693 阅读 · 7 评论 -
手把手教你FreeRTOS源码详解(四)——信号量、互斥量、递归互斥量
信号量又分为二进制信号量和计数型信号量,二进制信号量相当于一个长度为一的队列,其消息数取值只能为0,1;计数型信号量创建时可以设置其队列长度与队列中的初始消息数,即其消息数的取值没有限制原创 2023-01-01 22:25:26 · 2251 阅读 · 0 评论 -
手把手教你FreeRTOS源码详解(三)——队列
当xNewQueue为pdFALSE时,该队列已经初始化过了,只需要进行复位,队列复位后为空,出队阻塞的任务仍然保存阻塞状态,但入队阻塞的任务不再阻塞,应该从对应的列表中删除。如果采用覆写入队,直接将队列消息数目减1,在任务结尾会重新将队列消息数目加1,这样队列中的消息数目会一直为0,队列不会进行阻塞,在下一次入队时会直接将前面的数据进行覆盖。首先初始化队列存储区的起始地址,若队列长度为0(队列没有存储区),则指向队列的起始地址,若队列长度不为0,指向队列存储区的起始地址。原创 2022-12-27 21:41:12 · 2867 阅读 · 1 评论 -
手把手教你FreeRTOS源码详解(二)——任务管理
vTaskDelay函数的本质是调用prvAddCurrentTaskToDelayedList,将任务添加至对应的延时、阻塞链表,同样,首先将任务从就绪列表中移除,移除后并所移除的就绪列表中是否还有其余就绪的任务,若剩余就绪任务数为0,则清除该列表的就绪标志位。如果阻塞时间不为最大时,首先计算出唤醒任务的时间,xConstTickCount为执行任务prvAddCurrentTaskToDelayedList的时间,xTicksToWait为延时时间,xTimeToWake为唤醒时间。原创 2022-12-22 16:47:18 · 3325 阅读 · 3 评论 -
手把手教你FreeRTOS源码解析(一)——内存管理
FreeRTOS中一共有5种内存分配的方法,分别在文件heap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c种。虽然标准C库中的 malloc()和 free()也可以实现动态内存管理,但是它有以下缺陷:1、在小型嵌入式系统种效率不高。2、线程不安全。3、具有不确定性,每次执行的时间不同。4、会导致内存碎片。原创 2022-12-11 18:19:45 · 6053 阅读 · 1 评论