
C语言
文章平均质量分 67
爱的远日点
这个作者很懒,什么都没留下…
展开
-
FLASH模拟EEPROM编程
单片机内存FLASH模拟EEPROM编程原创 2022-04-28 11:04:35 · 2778 阅读 · 0 评论 -
基于梯形加减速的步进电机控制
基于梯形加减速的步进电机控制##1.步进电机基础方程##如果要步进电机以恒定的速度旋转,我们就需固频率发送脉冲,我们通过控制器的定时功能来实现脉冲发送,如图1-1所示,t0为脉冲发送的起始时刻,t1为发送第二个脉冲的时刻,t2为发送第三个脉冲的时刻。t0与t1之间的时间隔(时间延时)为△t= c0 * Tt,其中c0为定时器在t0与t1这段时间的定时器计数值,Tt为定时器的计数周期。t1与t2之前的时间隔为△t= c1 * Tt,其中c1为定时器在t1与t2这段时间的计数值,Tt为定时器的计数周期。比原创 2021-03-04 16:14:14 · 998 阅读 · 1 评论 -
音频信号FFT变换后节拍检测的软件实现(STM32)
前言:在人耳能听到的频率范围(20-20KHz)中,故我们设置采样频率为44100Hz(根据采样定理,采样频率要大于信号最大频率的两倍,才能保证不失真)来采集这0-20KHz的音频信号。我们把采样点数设置为1024个点,那么在进行1024点FFT时,将得到44100Hz / 1024 = 43Hz的频率分辨率.采样频率:Fs = 44100Hz样本数量:NPT = 1024这两个参数是FFT计算时候要用到的编程整体思路:1.使用ADC采集音频信号2.使用官方提供的FFT函数对采集到的信号进行处原创 2020-05-13 15:24:54 · 2731 阅读 · 0 评论 -
基于单片机系统串口控制台的软件实现(RTOS-STM32)
基于单片机系统串口控制台的软件实现(RTOS-STM32)1.前言玩过Linux的朋友, 是不是对Linux无所不能的串口Shell命令控制台羡慕不已, 要是自己做的STM32F系列低档次的MCU也有这种控制交互能力, 会给调试/维护和配置省下多少麻烦事呀, 比如启动/关闭调试或自检模式, 打印调试信息, 配置系统参数, 传输文件等等, 也有相当多的朋友凭借自己出色的编程能力可以实现这些功能, 下面是我自写的一个控制台软件, 以作交流.本平台(console)具备以下性能特点:1) 移植性强,代码文原创 2020-05-13 13:44:07 · 1146 阅读 · 2 评论 -
串口IAP升级软件实现
串口IAP软件在线升级一,IAP的原理IAP其实是将传统的程序分为了两个部分或者三部分,一个称为BootLoader区,另一个称为APP区域(用于存放用户升级的程序,还有一个就是APP备份区,如下所示: /******************* -------- 0x08000000 8k | boot | boot引导区域 -------- ...原创 2020-01-18 15:20:32 · 1656 阅读 · 0 评论 -
嵌入式RTOS软件新架构: 模式 + 状态机
嵌入式RTOS软件新架构: 模式 + 状态机:一,定义接口函数以及消息数据结构:#ifndef NULL #define NULL ( OS_NULL )#endif#define sys_ticks() OSGetTickCount()#define tick_timeout(x) ((int)(sys_ticks() - x) > 0)#define PE...原创 2020-01-18 11:35:39 · 2016 阅读 · 0 评论 -
位置式and增量式pid算法
/*增量式与位置式区别:1 增量式算法不需要做累加,控制量增量的确定仅与最近几次偏差采样值有关,计算误差对控制 量计算的影响较小。而位置式算法要用到过去偏差的累加值,容易产生较大的累加误差。2 增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作 影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作。而位置式的输出直接对应对象的输出,...原创 2020-01-18 08:58:44 · 1625 阅读 · 0 评论 -
全彩RGB呼吸灯效果实现-STM32
全彩RGB呼吸灯效果实现——PWM方式全彩LED 灯控制原理:使用STM32控制LED灯输出多种亮度等级,可以通过控制输出脉冲的占空比来实现,见图1.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oDFPJ2Ny-1573807073244)(C:/Users/Administrator/Desktop/makedownfile/1.png)]图1 不同占空...原创 2019-11-15 16:39:12 · 13064 阅读 · 1 评论 -
软件定时器模块-STM32
/******************************************************************************* 文件名称:SoftTimer.h* 内容摘要:软件定时器模块头文件* 其他说明:首先运行TimersInit函数,需向该函数提供"1ms的系统时钟"和"最大系统ms数",* 然后在各自的应用模块中调用CreatT...原创 2019-11-15 16:31:38 · 626 阅读 · 0 评论 -
单片机串口环形缓冲队列处理架构
我们知道的串口收发都是:接收一个数据,触发中断,然后把数据发回来。这种处理方式是没有缓冲的,当数量太大的时候,亦或者当数据接收太快的时候,我们来不及处理已经收到的数据,那么,当再次收到数据的时候,就会将之前还未处理的数据覆盖掉。那么就会出现丢包的现象了,对我们的程序是一个致命的创伤;于是就自己写了个缓冲区,代价就是消耗一部分内存空间,时间-空间本来就是一对矛盾体,想减少串口通信中数据丢失问题只能牺...原创 2019-07-22 15:14:20 · 1333 阅读 · 0 评论 -
单片机系统——基于STM32
1,裸机系统之轮询系统 轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情;轮询系统是一种非常简单的软件结构,通常只适用于那些只需要顺序执行代码且不需要外部事件来驱动的就能完成的事情,实时性比较低。轮询系统代码实例如下:1 int main(void)2 {3 /* 硬件相关初始化 */4 HardWareIni...原创 2019-07-21 19:01:14 · 1451 阅读 · 0 评论 -
深入了解函数指针与指针函数
一,概念函数指针:指向函数的指针变量,本质上是一个指针变量,指向的是一个函数指针函数:顾名思义就是带有指针的函数,即其本质是一个函数,只不过这种函数返回的是一个对应类型的地址,即返回的是一个指针。二,定义函数指针: type (*func)(type , type ),如 void (*func)(void),定义一个指向void类型的指针变量。指针函数:type ...原创 2017-11-22 11:57:05 · 275 阅读 · 0 评论