- 博客(28)
- 收藏
- 关注
原创 BMP280气压传感器
气压传感器是用来测量空气(或者其他气体)气压的传感器。BMP180/280是目前比较通用的,成本较低的气压传感器。这样子我们就实现了BMP280的数据读取,具体代码会上传到交流群里面,大家可以从主页获取群号。从BMP280的芯片手册中添加关于寄存器的宏定义,之后我们为BMP280的功能定义成结构体。P₀ 是海平面处的标准气压,约为 101325 Pa(或 1013.25 hPa)。T₀ 是海平面上的温度,通常为 288.15 K(15°C)。M 是空气的摩尔质量,约为 0.0289644 kg/mol。
2024-11-27 00:14:23
484
原创 单片机中为什么中断函数内部不能使用延时函数?
相信大家在学习STM32的过程中有可能听过这样子一句话:不要再中断函数中使用延时。这已经是形成了一种规范,因为这样子做可能会造成程序的死机,也有很多地方会以这个问题来考察面试者的基础知识是否扎实。但是,为什么会出现这个情况呢,本期我们就来详细的介绍和讨论一下这个情况。首先我们介绍一下中断函数的特点: 中断的优先级高:中断服务程序(ISR, Interrupt Service Routine)通常在中断发生时立即执行,打断当前正在执行的主程序或其他低优先级的中断服务程序。 执行
2024-07-31 15:29:36
3025
5
原创 什么是BLE低功耗蓝牙?游戏手柄和单片机的连接-用手柄操控设备!
这段时间在玩游戏的时候将我许久未用的游戏手柄拿了出来,玩着玩着突发奇想,能不能用单片机来接收游戏手柄的信息之后操控许多事情,例如利用游戏手柄来控制智能小车等,记得前段时间做的播种小车,利用的是手机APP控制,控制起来总是觉得有所别扭,缺乏感觉。设置服务UUID和特性UUID,以及设置好接收到通知的回调函数,之后就可以尝试连接了,我们接收到的数据是20个字节长度的数据,包含了摇杆位置信息,手柄上各个按键的信息,我们只需要将其转码我们所需要的数据,就可以实现手柄的信息的提取。
2024-07-21 11:51:29
809
原创 基于51单片机的电压表/时钟设计及对DS12887仿真过程中的注意事项(1)
AS引脚在原理图中被给到了ALE引脚,这里不知道是不是设计者的原因,ALE在标准8051系列是不能被作为IO口使用的,他会以时钟频率的六分之一进行输出,而这个引脚的功能是下降沿是把AD地址总线是值存入,使得内部内存导通,所以肯定是需要我们人物手动控制的。所以这里我怀疑是设计者的问题,当然在仿真的过程中,我们还是不能将这个IO连至ALE引脚,我们应该选择一个普通IO进行控制。虽然我们的P0是作为地址/数据复用总线使用的,但是不知道是仿真的关系还是什么,我们需要为P0加上上拉电阻才可以正常工作。
2024-06-18 19:48:49
988
原创 基于STM32F407的FreeRTOS学习笔记(5)——消息队列(任务间通信与同步)
除此之外,FreeRTOS中还有一个函数为xQueueOverwrite,传入参数除了没有阻塞时间之外和xQueueSend一样,它的作用为将消息送入队列,如果没有空间则覆盖最后一个空间,我们将按钮2中的函数换为该函数再试试。首先是发布项目按副本排队而不是引用指针,指的是我们传入的数据是先拷贝的临时变量传入,而并非我们传入数据的地址,我想这样子是为了避免在接收端时对数据进行修改导致错误。我们再继续按下按钮2,由于队列的长度为1,且队列的项目并没有出队列,因此串口会提示送入队列失败。
2023-11-21 22:57:55
337
原创 基于STM32F407的FreeRTOS学习笔记(4)——获取各任务运行时间及占用情况
再次运行,依旧报错,从报错内容来看,提醒我们如果将configGENERATE_RUN_TIME_STATS使能的话,我们也必须定义portCONFIGURE_TIMER_FOR_RUN_TIME_STATS这个启动函数,以及后面的一条报错,我们必须定义portGET_RUN_TIME_COUNTER_VALUE时间的返回值。我们定义这两个宏,本来这个括号是没加上去的,后来发现其调用的时候是代括号的,所以定义宏的时候不带括号就会出错。第一行内容,即为函数定义的位置,我们跳转过去查看其情况。
2023-11-21 22:56:43
952
原创 基于STM32F407的FreeRTOS学习笔记(3)——任务的挂起与恢复
在FreeRTOS的API文档中找到任务挂起函数的介绍,函数需要的参数为我们想要挂起的任务句柄,如果传递为NULL则暂停我们的调用任务。接下来我们实现一个任务,目标是当LED1闪烁5次后挂起LED0闪烁的任务,当LED1再闪烁5次后恢复LED0闪烁的任务。我们在API中找到查询任务状态的函数eTaskGetState,该函数传入参数为任务句柄,返回参数为任务状态。,将运行中的任务挂起后,任务将暂停运行,直至系统恢复任务的运行。上一期学习了任务的创建和删除,这一期学习任务的挂起与恢复。
2023-11-21 22:53:31
157
原创 基于STM32F407的FreeRTOS学习笔记(2)——任务的创建与删除
(动态和静态的区别之后再研究)vTaskDelete是删除任务,因为freeRTOS的任务内存空间存储在堆区,所以很像C语言的动态内存分配,任务使用和结束我们都应该创建和删除这些任务防止占用过多空间。因此我们创建任务的步骤是:首先定义一个启动任务,该任务是为了启动我们的真正任务,因此在调用完一遍后要用vTaskDelete 中输入NULL删除启动函数本身。同样的方法,我们创建启动 启动函数的任务(有点绕口因为启动函数本身是一个任务)在任务启动函数中加入我们新建的任务。我们创建启动任务的函数,将。
2023-11-21 22:52:00
145
原创 基于STM32F407的FreeRTOS学习笔记(1)——环境搭建
之后我们又遇到了几个报错,这些报错主要是在FreeRTOSConfig.h中我们使能了几个构造函数,但是并没有定义这些构造函数,因此我们需要在FreeRTOSConfig.h中关闭这些构造函数。下载好源码后,我们利用CUBEMX创建我们的工程,我选择的是STM32F407ZGT6这块芯片,之后将我们的下载的RTOS中的Source文件夹拷贝到我们利用CUBEMX创建的工程目录中。),并从之前FreeRTOS的源码中找到Demo文件夹,找到我们对应的单片机的文件夹。我们去这些文件中挨个注释掉这些重复的函数。
2023-11-21 22:50:51
256
原创 WL01涡流传感器
几个电容一个三极管加一个线圈,虽然P2的丝印和型号都没有标,但是结合4脚GND,8脚VCC,7脚6脚接一起作为输出,5脚输入的结构,我也不难猜出这是一块双运放由于前级是三极管的集电极,因此加上跟随器使得输出信号可以进入单片机后正常工作。虽然~我知道电子模块的暴利,也知道其实其中的知识才是宝贵的,但是当我看到这个模块的原理图的时候,着实没绷住。然后,我看着这图,越看越眼熟,越看越眼熟,越看越眼熟,这BYD不是三点式电容振荡器嘛。于是,在修改电路图之后,并于面包板中搭建。好了,我是韭菜,下午就去退款了。
2023-07-19 22:34:37
2618
5
原创 基于电流镜的高精度稳定电流源设计
理论上该电流源可以工作在更高的电压空间。使用运放负反馈电路可以使得负载RL(R4)上有一个稳定的电流,根据运放虚短原理U+ = U- ,即流经R3的电流为(3.3-1.65)/ 1 = 1.65mA 三极管的发射极电流等于基极加上集电极电流之和,因此IE = (1+β) IC 二者电流近似相等。,我们在电流镜的基础上可以设计成比例电流镜,使得电流等比例的进行放大,并且保持电流的稳定(电流镜如其名,像镜子一样复制电流)电流源的负载并不是接地的,而是浮于半空,这是一个浮纳型电流镜。
2023-07-19 22:33:32
1532
1
原创 有源二分频放大电路的软件实现法
此外我们的数据未经过校准,数字电位器的理论阻值在0~10k,实际使用过程中发现实际阻值应该在25~9.6k,中间阻值在4.88K,因此如果我们要更加精确的进行衰减,应当先对数字电位器的阻值进行校准匹配之后计算。我们可以使用这种方式实现题目的所有要求,但是这就失去了电子竞赛的魅力~可是随着时代的发展越来越多的功能集成到了一块芯片上面,电子竞赛中也出现了许多更强大的嵌入式如linux,FPGA,AI也在电赛中大放异彩,因此跟随时代的潮流,掌握基本功才是新时代的立身之本!图2 AD5933功能图。
2023-07-19 22:32:14
810
原创 阻抗转换器AD5933使用总结及分析(2)
我们会发现,尖峰出现在了30K+-5K的频率上,符合AM信号的频域特征,为了区别明显,我们使用在20K频率上调制进50K信号进行分析.我们也可以清楚的看到在50-20K和50+20K的两个频率上面有着峰值,因此,我们可以使用AD5933对信号进行对应的特征提取。结果显而易见,我们可以利用AD5933给定的信号进行DFT频谱分析获得我们想要的信号,于是进行了更多的实验。在10K的方波信号中,我们发现对其DFT后,方波频率的每一个基波上均是符合傅里叶变换的。我们将信号改至30KHZ,1500mVp-p。
2023-07-13 10:18:50
2104
4
原创 VMware Linux虚拟机开机蓝屏
近日,在学习正点原子的Linux开发板时需要安装Linux的虚拟机,使用了VMware的软件,使用过程中发现,设置好虚拟机后点击“启动虚拟机”即电脑蓝屏~~折腾了好久都没有解决,最后发现可能是VMware版本过低导致。点开帮助->软件更新。检查更新后到最新版本即可。
2023-05-25 21:18:21
846
1
原创 ESP8266运行复位并且闪烁蓝光(ets Jan 8 2013,rst cause:2, boot mode:(3,6)
ESP8266 快速闪烁蓝灯,复位问题的解决。
2022-11-28 17:44:10
3635
2
NE555方波调节电路
2023-05-05
STM32单片机采集方波频率
2023-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人