自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(219)
  • 收藏
  • 关注

原创 基于MSP430送药小车 ----- 基础篇【2021年全国电赛(F题)】

设计并制作智能送药小车,模拟完成在医院药房与病房间药品的送取作业。院区结构示意如图1所示。院区走廊两侧的墙体由黑实线表示。走廊地面上画有居中的红实线,并放置标识病房号的黑色数字可移动纸张。药房和近端病房号(1、2号)如图1所示位置固定不变,中部病房和远端病房号(3-8号)测试时随机设定。工作过程:参赛者手动将小车摆放在药房处(车头投影在门口区域内,面向病房),手持数字标号纸张由小车识别病房号,将约200g药品一次性装载到送药小车上:小车检测到药品装载完成后自动开始运送;小车根据走廊上的标识信息自动识别、寻

2023-06-01 22:56:27 237 2

原创 【瑞萨RA_FSP】DMAC/DTC编程实战

首先,要使用 DMA 传输,就肯定要有一个源地址和一个目标地址, 这里定义 SRC_Buffer 数组的首地址作为源地址, DST_Buffer 数组的首地址作为DMAC传输的目标地址。SRC_Buffer 数组由于有 const 声明为常量,因此其数据存储在内部 Flash 中, DST_Buffer 为普通的全局变量,其数据存储在 RAM 中。这两个数组的大小由宏定义 BUFFER_SIZE 来决定。

2023-05-30 21:07:52 332 1

原创 3步解决Keil5 ST-LINK setting闪退问题

3步解决Keil5 ST-LINK setting闪退问题。

2023-05-25 21:33:48 71

原创 【瑞萨RA_FSP】DMAC/DTC——直接存储器访问与数据传输

DMAC(Direct Memory Access Controller)为直接存储器访问控制器或者直接内存访问控制器, 可以在不占用 CPU 的情况下将数据从一个内存位置传输到另一个内存位置。DTC(Data Transfer Controller)为数据传输控制器,用于在被中断请求激活时传输数据。DTC 也可以在不占用 CPU 的情况下将数据传输,它的功能与 DMAC 的功能其实是相似的。

2023-05-24 06:00:00 319

原创 【瑞萨RA_FSP】UART 编程实战

若使用了 R_SCI_UART_Write() 来发送数据, 在数据发送完成之后会导致 uart_send_complete_flag 这个标志位被置位, 因此程序在调用 R_SCI_UART_Write 函数之后需要等待 uart_send_complete_flag 标志位被置位, 然后将该标志位清零。FSP 配置并生成代码之后,首先需要使用 R_SCI_UART_Open 函数打开 SCI4 UART 模块, 我们把这层调用封装为一个 Debug_UART4_Init 函数,如下所示。

2023-05-23 06:00:00 253

原创 【瑞萨RA_FSP】SCL UART 串口通信

串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设。对于通讯协议, 我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。

2023-05-22 06:00:00 276

原创 【瑞萨RA_FSP】外部中断

Interrupt Request Control Register(IRQCR) — 中断请求控制寄存器,这个寄存器拥有0-15个通道,有三个标志位: (1) IRQMD[1:0]检测感知选择 (2) FCLKSEL[1:0]数字滤波采样时钟选择 (3) FLTEN数字滤波器使能。

2023-05-21 06:00:00 407

原创 【野火启明_瑞萨RA6M5】按键输入检测

野火启明6M5开发板的按键电路图如下图所示, 图中RA6M5芯片的P004、P005引脚分别通过一个10KΩ的贴片电阻连接到电源的正极,所以按键在没有被按下的时候,GPIO引脚的输入状态为高电平状态, 分别又通过串联一个100Ω的贴片电阻和一个按键接地,所以按键在被按下的时候,GPIO引脚的输入状态为低电平状态。只要我们检测引脚的输入电平,即可判断按键是否被按下。需要注意的是,KEY1_SW2_PIN 和 KEY2_SW3_PIN 宏定义了两个用户按键的引脚,不同的板子按键引脚是不一样的。

2023-05-20 06:00:00 385

原创 【野火启明_瑞萨RA6M5】梦的开始 ---- 点灯(FSP库)

在 FSP 配置界面里面点开 “Pins”-> “Ports”-> “P4”-> “P400”, 然后将连接到LED灯的 IO 引脚的 “Mode” 属性配置为 “Output mode (Initial High)”, 表示该引脚默认输出高电平,其他的属性默认即可。重新规划一下我们的工程结构。工程新建好之后,在工程根目录的 “src” 文件夹下面新建 “led” 文件夹, 再进入 “led” 文件夹里面新建 led 驱动的源文件和头文件:“bsp_led.c” 和 “bsp_led.h”。

2023-05-19 06:00:00 214

原创 【野火启明_瑞萨RA6M5】梦的开始 ---- 点灯(寄存器)

芯片的引脚可以被粗略地分为 IO 引脚和非 IO 引脚。非 IO 引脚就是电源引脚、晶振引脚等的那些引脚,他们不具备 GPIO(通用输入输出)功能。而 IO 引脚是那些具备 GPIO 功能的引脚,他们可以配置为各种模式、实现各种通用功能。IO 引脚最基本的输出功能是输出高、低电平,实现开关控制(比如开关LED灯、继电器或三极管等);最基本的输入功能是检测外部输入电平(比如通过引脚电平的高低区分按键是否被按下)。IO 引脚还可以用来连接外部设备,与外部设备进行通讯,发送控制指令,采集传感器数据等等。

2023-05-18 06:00:00 306

原创 Zigbee物联网应用与开发复习汇总(附某高校期末真题试卷)

1. Zigbee、蓝牙、IEEE802.11b(WiFi)标准都是工作在2.4G频段的无线通信标准;Zigbee主要用在短距离无线控制系统,传输少量的控制信息;2. 短距离无线网络主要分为:无线局域网(WLANs)和无线个域网(WPANs)3. 无线个域网所对应的通信协议:HR-WPANS:802.15.3MR-WPANS:蓝牙LR-WPANS(低速率无线个域网):802.15.44. Zigbee最大传输速率:250kbps。 ZigBee可工作在2.

2023-05-17 22:24:57 214

原创 【瑞萨RA系列FSP库开发】初识寄存器

寄存器实际上与 RAM、FLASH 一样,也是芯片内部的一种存储器(Memory)。 一般而言,RAM 是程序运行的内存,FLASH 则是用来保存程序本身。 寄存器与 RAM、FLASH 等存储器的不同之处在于:寄存器除了保存了芯片的功能状态之外, 还是配置和控制芯片的桥梁,我们可以通过寄存器配置和操作芯片的功能。一般而言,我们在对 MCU 芯片进行编程时有两种编程方式, 一种是寄存器编程,另外一种是固件库编程(或者说库函数编程)。 那么,固件库又是什么东西?固件库说白了其实是通过寄存器编程之后的产物,

2023-05-17 06:00:00 235

原创 【瑞萨RA系列FSP库开发】串口烧录(Renesas Flash Programmer)

RA 产品家族单片机 (MCU) 于 2019 年 10 月推出,丰富了瑞萨的 32 位 MCU 系列产品。除了 RA系列之外的 32 位 MCU 产品还有 RX 系列(CPU 使用瑞萨自家 RX 内核)和 Renesas Synergy™ 平台 MCU。Renesas Advanced (RA) 32 位 MCU 是采用 Arm® Cortex®-M33、-M23 和 -M4 处理器内核,并经过 PSA Certified ® 1 级认证的、行业领先的 32 位 MCU。

2023-05-16 06:00:00 120

原创 【瑞萨RA系列FSP库开发】RASC+Keil的环境搭建

RA 产品家族单片机 (MCU) 于 2019 年 10 月推出,丰富了瑞萨的 32 位 MCU 系列产品。除了 RA系列之外的 32 位 MCU 产品还有 RX 系列(CPU 使用瑞萨自家 RX 内核)和 Renesas Synergy™ 平台 MCU。Renesas Advanced (RA) 32 位 MCU 是采用 Arm® Cortex®-M33、-M23 和 -M4 处理器内核,并经过 PSA Certified ® 1 级认证的、行业领先的 32 位 MCU。

2023-05-15 17:07:47 498

原创 FreeRTOS 内存管理

FreeRTOS 创建任务、队列、信号量等的时候有两种方法,一种是动态的申请所需的 RAM。一种是由用户自行定义所需的 RAM,这种方法也叫静态方法,使用静态方法的函数一般以“Static”结尾,比如任务创建函数 xTaskCreateStatic(),使用此函数创建任务的时候需要由用户定义任务堆栈,本章我们不讨论这种静态方法。使用动态内存管理的时候 FreeRTOS 内核在创建任务、队列、信号量的时候会动态的申请RAM。

2023-05-07 06:00:00 404

原创 FreeRTOS 空闲任务

当 FreeRTOS 的调度器启动以后就会自动的创建一个空闲任务,这样就可以确保至少有一任务可以运行。但是这个空闲任务使用最低优先级,如果应用中有其他高优先级任务处于就绪态的话这个空闲任务就不会跟高优先级的任务抢占 CPU 资源。空闲任务还有另外一个重要的职责,如果某个任务要调用函数 vTaskDelete()删除自身,那么这个任务的任务控制块 TCB 和任务堆栈等这些由 FreeRTOS 系统自动分配的内存需要在空闲任务中释放掉,如果删除的是别的任务那么相应的内存就会被直接释放掉,不需要在空闲任务中释放。

2023-05-06 06:00:00 623

原创 FreeRTOS 低功耗 Tickless 模式

在之前介绍获取任务运行时间信息的时候可以看出,一般的简单应用中处理器大量的时间都在处理空闲任务,所以我们就可以考虑当处理器处理空闲任务的时候就进入低功耗模式,当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。相比于前面两种低功耗模式,待机模式的功耗最低。(9)、configPRE_SLEEP_PROCESSING()是个宏,在进入低功耗模式之前可能有一些其他的事情要处理,比如降低系统时钟、关闭外设时钟、关闭板子某些硬件的电源等等,这些操作就可以在这个宏中完成,后面会讲解这个宏如何使用。

2023-05-05 06:00:00 434

原创 Zigbee 无线串口通信模块( DL-22 )

DL-22无线串口模块为串口转2.4G无线模块,可以通过无线将两个或者多个串口连接起来。串口发入模块的数据会被模块使用无线发出,收到无线数据的模块会将这个数据使用串口发出,在两个设备上使用模块就像将这两个设备用串口连接起来一样。1. 主要特点点对点传输带有确认,数据丢失率为0.00%。支持串口不间断发送。支持串口双向同时收发。最高可达3300字节每秒的传输速率。适应2.8V~3.5V。使用单个按键进行设置,可以修改模块的信道、波特率。按键可配置为多对多模式。2. 模块实图。

2023-05-04 06:00:00 603

原创 基于TI板MSP430 玩转PID

该篇以电机控速为例展开分析,假如你手上有一个编码器电机,其余配件若干,请你运用PID算法相关知识设计出一套完整的反馈路线。相信大家最常用的设计路线是用定时器,那么这里我就以定时器来构思反馈路线。1. 编码器电机的变化源于所在ABZ三相的变化(一般编码器电机只有A相和B相,这里也以该俩相为例),所以先对该两项进行设计,可知定时器有输入捕获功能刚好可以用于捕获AB相的变化 【定时器一】。2. 每隔一定时间对电机速度进行一次检测,以及时响应未知变化 【定时器二】。3. 需对电机进行速度控制

2023-05-03 06:00:00 584

原创 FreeRTOS 任务通知

任务通知在 FreeRTOS 中是一个可选的功能,要使用任务通知的话就需要将宏configUSE_TASK_NOTIFICATIONS 定义为 1。FreeRTOS 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulNotifiedValue就是这个通知值。任务通知是一个事件,假如某个任务通知的接收任务因为等待任务通知而阻塞的话,向这个接收任务发送任务通知以后就会解除这个任务的阻塞状态。

2023-05-02 06:00:00 730

原创 FreeRTOS 事件标志组

1. 事件位(事件标志)事件位用来表明某个事件是否发生,事件位通常用作事件标志,比如下面的几个例子:● 当收到一条消息并且把这条消息处理掉以后就可以将某个位(标志)置 1,当队列中没有消息需要处理的时候就可以将这个位(标志)置 0。● 当把队列中的消息通过网络发送输出以后就可以将某个位(标志)置 1,当没有数据需要从网络发送出去的话就将这个位(标志)置 0。● 现在需要向网络中发送一个心跳信息,将某个位(标志)置 1。现在不需要向网络中发送心跳信息,这个位(标志)置 0。2. 事件组。

2023-05-01 06:00:00 620

原创 FreeRTOS 软件定时器

1. 软件定时器概述软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能函数,被定时器调用的这个功能函数叫做定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期,简而言之,当定时器的定时周期到了以后就会执行回调函数。2. 编写回调函数的注意事项软件定时器的回调函数是在定时器服务任务中执行的,所以一定不能在回调函数中调用任何会阻塞任务的 API 函数!

2023-04-30 06:00:00 725

原创 FreeRTOS 信号量(五) ------ 递归互斥信号量

递归互斥信号量可以看作是一个特殊的互斥信号量,已经获取了互斥信号量的任务就不能再次获取这个互斥信号量,但是递归互斥信号量不同,已经获取了递归互斥信号量的任务可以再次获取这个递归互斥信号量,而且次数不限!一个任务使用函数 xSemaphoreTakeRecursive()成功的获取了多少次递归互斥信号量就得使用函数 xSemaphoreGiveRecursive()释放多少次!比如某个任务成功的获取了 5 次递归信号量,那么这个任务也得同样的释放 5 次递归信号量。

2023-04-29 06:00:00 745

原创 FreeRTOS 信号量(四) ------ 互斥信号量

互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一个钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其他的任务就可以拿着这个钥匙去使用资源。互斥信号量使用和二值信号量相同的 API 操作函数,所以互斥信号量也可以设置阻塞时间,不同于二值信号量的是互斥信号量具有优先级继承的特性。

2023-04-28 06:00:00 575

原创 FreeRTOS 信号量(三) ------ 优先级翻转

(1) 任务 H 和任务 M 处于挂起状态,等待某一事件的发生,任务 L 正在运行。(2) 某一时刻任务 L 想要访问共享资源,在此之前它必须先获得对应该资源的信号量。(3) 任务 L 获得信号量并开始使用该共享资源。(4) 由于任务 H 优先级高,它等待的事件发生后便剥夺了任务 L 的 CPU 使用权。(5) 任务 H 开始运行。(6) 任务 H 运行过程中也要使用任务 L 正在使用着的资源,由于该资源的信号量还被任务L 占用着,任务 H 只能进入挂起状态,等待任务 L 释放该信号量。(7) 任务 L 继

2023-04-27 06:00:00 405

原创 FreeRTOS 信号量(二) ------ 计数型信号量

有些资料中也将计数型信号量叫做数值信号量,二值信号量相当于长度为 1 的队列,那么计数型信号量就是长度大于 1 的队列。同二值信号量一样,用户不需要关心队列中存储了什么数据,只需要关心队列是否为空即可。1、事件计数在这个场合中,每次事件发生的时候就在事件处理函数中释放信号量(增加信号量的计数值),其他任务会获取信号量(信号量计数值减一,信号量值就是队列结构体成员变量uxMessagesWaiting)来处理事件。在这种场合中创建的计数型信号量初始计数值为 0。2、资源管理。

2023-04-26 06:00:00 359

原创 基于STM32和oneNET云平台的数据采集系统(MQTT协议)

该篇为基于stm32+esp8266通过mqtt协议连接onenet物联网云平台,单片机部分将采集到的数据(温湿度、光照强度、压强等等)上传至云平台服务器,云平台可下发指令操控单片机,实现远程通信。

2023-04-25 06:00:00 1377

原创 MQTT协议 详解

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。

2023-04-24 06:00:00 364

原创 FreeRTOS 信号量(一) ------ 二值信号量

二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一些细微的差别,互斥信号量拥有优先级继承机制,二值信号量没有优先级继承。因此二值信号另更适合用于同步(任务与任务或任务与中断的同步),而互斥信号量适合用于简单的互斥访问,有关互斥信号量的内容后面会专门讲解,本节只讲解二值信号量在同步中的应用。和队列一样,信号量 API 函数允许设置一个阻塞时间,阻塞时间是当任务获取信号量的时候由于信号量无效从而导致任务进入阻塞态的最大时钟节拍数。如果多个任务同时阻塞在同一一个信号量上的话那么优先

2023-04-23 06:00:00 368

原创 FreeRTOS 队列(二)

创建好队列以后就可以向队列发送消息了,FreeRTOS 提供了 8 个向队列发送消息的 API 函数,如下所示:1、函数 xQueueSend()、xQueueSendToBack()和 xQueueSendToFront()这三个函数都是用于向队列中发送消息的,这三个函数本质都是宏,其中函数 xQueueSend()和 xQueueSendToBack()是一样的,都是后向入队,即将新的消息插入到队列的后面。函数xQueueSendToToFront()是前向入队,即将新消息插入到队列的前面。然而!

2023-04-22 06:00:00 296

原创 FreeRTOS 队列(一)

队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中断之间传递消息,队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之间要交流的数据保存在队列中,叫做队列项目。队列所能保存的最大数据项目数量叫做队列的长度,创建队列的时候会指定数据项目的大小和队列的长度。由于队列用来传递消息的,所以也称为消息队列。FreeRTOS 中的信号量的也是依据队列实现的!所以有必要深入的了解FreeRTOS 的队列。

2023-04-21 06:00:00 424

原创 FreeRTOS 时间管理

一、FreeRTOS 延时函数1. 函数 vTaskDelay()2. 函数 prvAddCurrentTaskToDelayedList()3. 函数 vTaskDelayUntil()二、FreeRTOS 系统时钟节拍

2023-04-20 06:00:00 452

原创 FreeRTOS 其他任务 API 函数

1. 函数 uxTaskPriorityGet()2. 函数 vTaskPrioritySet()3. uxTaskGetSystemState()4. 函数 vTaskGetInfo()5. 函数 xTaskGetApplicationTaskTag()6. 函数 xTaskGetCurrentTaskHandle()7. 函数 xTaskGetHandle()8. 函数 xTaskGetIdleTaskHandle()9. 函数 uxTaskGetStackHighWaterMark()

2023-04-19 06:00:00 295

原创 FreeRTOS 系统内核控制函数

1、 taskYIELD() 2、taskENTER_CRITICAL() 3、taskEXIT_CRITICAL() 4、 taskENTER_CRITICAL_FROM_ISR() 5、taskEXIT_CRITICAL_FROM_ISR() 6、 taskDISABLE_INTERRUPTS() 7、taskENABLE_INTERRUPTS() 8、vTaskStartScheduler() 9、vTaskEndScheduler() 10、vTaskSuspendAll() 11、xTaskRe

2023-04-18 06:00:00 405

原创 FreeRTOS 任务切换

RTOS 系统的核心是任务管理,而任务管理的核心是任务切换,任务切换决定了任务的执行顺序,任务切换效率的高低也决定了一款系统的性能,尤其是对于实时操作系统。PendSV 异常 、FreeRTOS 任务切换场合1. 执行系统调用 taskYIELD()2. 系统滴答定时器(SysTick)中断 SysTick_Handler、PendSV 中断服务函数 PendSV_Handler()、查找下一个要运行的任务 vTaskSwitchContext()、FreeRTOS 时间片调度、时间片调度实验

2023-04-17 06:00:00 381

原创 FreeRTOS 任务调度及相关函数详解(二)

一、任务创建函数 xTaskCreate()二、任务初始化函数 prvInitialiseNewTask()三、任务堆栈初始化函数 pxPortInitialiseStack()四、添加任务到就绪列表 prvAddNewTaskToReadyList()五、任务删除 vTaskDelete()六、任务挂起 vTaskSuspend()七、任务恢复 vTaskResume()

2023-04-16 06:00:00 183

原创 FreeRTOS 任务调度及相关函数详解(一)

顾名思义,空闲任务就是空闲的时候运行的任务,也就是系统中其他的任务由于各种原因不能运行的时候空闲任务就在运行。(3)、取 R3 所保存的地址处的值赋给 R0,我们知道任务控制块的第一个字段就是任务堆栈的栈顶指针 pxTopOfStack 所指向的位置,所以读取任务控制块所在的首地址(0X20000EE8)得到。可以看出(1)、(2)和(3)的目的就是获取要切换到的这个任务的任务栈顶指针,因为任务所对应的寄存器值,也就是现场都保存在任务的任务堆栈中,所以需要获取栈顶指针来恢复这些寄存器值!

2023-04-15 06:00:00 282

原创 FreeRTOS 列表和列表项

1. 列表列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务。2. 列表项就是存放在列表中的项目,FreeRTOS 提供了两种列表项:列表项和迷你列表项。3. 列表初始化新创建或者定义的列表需要对其做初始化处理,列表的初始化其实就是初始化列表结构体List_t 中的各个成员变量。4. 列表项初始化同列表一样,列表项在使用的时候也需要初始化,列表项初始化由函数 vListInitialiseItem()来完成.

2023-04-14 06:00:00 177

原创 FreeRTOS 任务相关 API 函数(二)

从上图可以看出,一开始任务 1 和任务 2 都正常运行,当挂起任务 1 或者任务 2 以后任务 1 或者任务 2 就会停止运行,直到下一次重新恢复任务 1 或者任务 2 的运行。pdTRUE: 恢复运行的任务的任务优先级等于或者高于正在运行的任务(被中断打断的任务),这意味着在退出中断服务函数以后必须进行一次上下文切换。pdFALSE: 恢复运行的任务的任务优先级低于当前正在运行的任务(被中断打断的任务),这意味着在退出中断服务函数的以后不需要进行上下文切换。

2023-04-13 06:00:00 368

原创 FreeRTOS 任务相关 API 函数(一)

其他任务的创建就放到开始任务的任务函数中,由于开始任务的职责就是创建其他应用任务和信号量、队列等这些内核对象的,所以它只需要执行一次,当这些东西创建完成以后就可以删除掉开始任务了。是使用动态方法创建的,也就是使用函数 xTaskCreate()创建的,那么在此任务被删除以后此任务之前申请的堆栈和控制块内存会在空闲任务中被释放掉,因此当调用函数 vTaskDelete()删除任务以后必须给空闲任务一定的运行时间。创建任务设置优先级的时候就用这个宏,当然了也可以直接在创建任务的时候指定任务优先级。

2023-04-12 06:00:00 329

stm32-OneNet(mqtt).zip

基于stm32+esp8266通过mqtt协议连接onenet物联网云平台,单片机部分将采集到的数据(温湿度、光照强度、压强等等)上传至云平台服务器,云平台可下发指令操控单片机,实现远程通信。

2023-05-08

基于STM32 蓝牙双机通信.zip

1、打开两个串口调试助手,选好COM口、波特率选38400,数据位为8,停止位为1。 2、恢复两个蓝牙的默认设置(最好选择文本模式发送AT命令): AT+ORGL/r/n (/r/n代表一个回车,在每一条AT指令之后都要加一个回车)。 3、【(A)主机配置】蓝牙名字配置:AT+NAME=YI(名字任意) 4、【(A)主机配置】蓝牙模式配置:AT+ROLE=1(主机模式) 5、【(A)主机配置】蓝牙密码配置:AT+PSWD=1234(密码任意) 6、【(B)从机配置】蓝牙名字配置:AT+NAME=YI(名字要一致) 7、【(B)从机配置】蓝牙模式配置:AT+ROLE=O(从机模式) 8、【(B)从机配置】蓝牙密码配置:AT+PSWD=1234(密码要一致) 9、蓝牙地址的绑定,通过串口助手查询B蓝牙的地址:AT+ADDR? 10、蓝牙A绑定蓝牙B的地址,给蓝牙A(主蓝牙)发送指令:AT+BIND= (B的地址),注意在绑定地址的时候要把查询到的地址中的冒号换成逗号,例如98d3:51:fd8103,应该换成98d3,51,fd8103。 11、按照相同的方式,查询A的

2023-05-05

STM32F103红外循迹小车

基于stm32单片机下的智能小车实现红外循迹功能,智能小车的项目非常多,比如说循迹避障、蓝牙遥控、视觉控制等等,我将会一步一步带大家走进stm32单片机的项目当中。

2023-05-05

stm32-五线四相步进电机.zip

采用STM32驱动28BYJ4步进电机,实现正转反转,完成角度调整。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动------一个固定的角度(及步进角)。可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

2023-05-05

STM32-读写RFID.zip

RFID是Radio Frequency Identification的缩写,是一种无接触自动识别技术,利用射频信号及其空间耦合传输特性,实现对静止的或移动中的待识别物品的自动识别 。RFID系统则由两个部分组成,即电子标签和阅读器。 阅读器是将标签中的信息读出,或将标签所需要存储的信息写入标签的装置。根据使用的结构和技术不同,阅读器可以是读/写装置,是RFID系统信息控制和处理中心。阅读器 (问答器) 可放置在一固定地点,如:入口/出口,销售网点、仓库、货栈、大商场;阅读器同样可在移动的范围中使用。 电子标签由收发天线、AC/DC电路、解调电路、逻辑控制电路、存储器和调制电路组成。分为无源电子标签-passive tag,对应无源RFID系统;半无源电子标签-semi-passive tag,对应于半无源RFID系统;有源电子标签—active tag,对应于有源RFID系统; 工作原理 RFID技术的基本工作原理并不复杂:在标签进入磁场后,接收解读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息,或者主动发送某一频率的信号;解读器读取信息并解码后,发送至

2023-05-05

stm32-qt遥控小车.zip

本项目本质为客户端与服务器之间的通信,通过发送不同的指令,服务器和客户端进行不同的操作。 客户端:基于STM32制作简单行驶小车 服务器:安卓手机,基于Socket编程下 用QT进行安卓开发,将app传输到手机上。 TCP通信:ESP8266 手机端发送不同指令,小车执行不同操作

2023-05-05

mpu6050姿态解算(陀螺仪).zip

MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主IIC接口,可以向应用端输出完整的9轴姿态融合演算数据。

2023-05-05

GY-39(IIC).zip

GY-39 是一款低成本,气压,温湿度,光强度 传感器模块。工作电压 3-5v,功耗小,安装方便。 其工作原理是,MCU 收集各种传感器数据,统一处理,直接输出计算后的结果,此模块,有两种方式读取数据,即串口 UART(TTL 电平)或者 IIC(2 线)。串口的波特率有 9600bps 与 115200bps,可配置,有连续,询问输出两种方式,可掉电保存设置。可适应不同的工作环境,与单片机及电脑连接。模块另外可以设置单独传感器芯片工作模式,作为简单传感器模块,MCU 不参与数据处理工作。提供 arduino,51,stm32 单片机通讯程序,不提供原理图及内部单片机源码。此 GY39 模块另外赠送安卓手机软件 app 查看数据,且支持 wifi 局域内网连接,手机及电脑同时显示数据。

2023-05-05

MSP430驱动函数库

MSP430 是德州仪器(TI)一款性能卓越的超低功耗 16 位单片机,自问世以来,MSP430 单片机一直是业内公认的功耗最低的单片机。除采用先进的制造工艺使芯片的静态电流尽可能降低外,MSP430 的独立可配置的时钟系统是其低功耗的基石之一。在追求绿色能源的今天,MSP430 超低功耗微控制器正以其超低功耗的特性,以及丰富多样化的外设受到越来越多设计者们的青睐。 MSPDRIVERLIB — 适用于 MSP430 设备的 DriverLib 该库包含gpio、clock、flash、uart、usb、adc、dma、iic、spi、timer、rtc、watchdog等多种模块函数驱动。

2023-03-14

IAR for MSP430 7101

IAR for ARM、MSP430、8051 保姆式安装 IAR Embedded Workbench 是瑞典IAR Systems公司为 微处理器开发的一个集成开发环境,支持ARM,AVR,MSP430等芯片内核平台。 IAR Systems 是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。

2023-03-11

C语言/C++常见笔试面试题难疑点汇总

#pragma comment。将一个注释记录放置到对象文件或可执行文件中。 #pragma pack。用来改变编译器的字节对齐方式。 #pragma code_seg。它能够设置程序中的函数在obj文件中所在的代码段。如果未指定参数,函数将放置在默认代码段.text中 #pragma once。保证所在文件只会被包含一次,它是基于磁盘文件的,而#ifndef则是基于宏的。 当类不包含任何成员的时候,大小本该是0,但是为了便于区分,大小是1 .c是标准C程序文件名的后缀;.cpp则是C++程序文件名的后缀;.obj是源程序经编译后所生成的目标文件的扩展名;.exe则是源程序经编译、链接后所生成的执行文件的扩展名。 结构体变量不管其包含有多少个成员,都应当看成是一个整体。在程序运行期间,只要在变量的生存期内,所有成员一直驻留在内存中 C提供的三种预处理功能:宏定义 文件包含 条件编译 在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为int,C++中为void const 限定一个数据为只读属性。 (1)const char p; 限定变量 p 为只读。

2023-02-27

STM32-BH1750+OLED

BH1750FVI 是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。 工作原理: BH1750的内部由光敏二极管、运算放大器、ADC采集、晶振等组成。PD二极管通过光生伏特效应将输入光信号转换成电信号,经运算放大电路放大后,由ADC采集电压,然后通过逻辑电路转换成16位二进制数存储在内部的寄存器中(光照越强,光电流越大,电压就越大)。 产品特点:支持I2CBUS接口接近视觉灵敏度的光谱灵敏度特性输出对应亮度的数字值对应广泛的输入光范围。(相当于1-65535lx)通过降低功率功能,实现低电流化。通过50Hz/60Hz除光噪音功能实现稳定的测定。支持1.8v逻辑输入接口。无需其他外部件。光源依赖性弱。有两种可选的I2Cslave地址。可调的测量结果影响较大的因素为光入口大小。使用这种功能计算1.1lx到100000lx马克斯/分钟的范围。最小误差变动在±20%。受红外线影响很小。

2023-02-25

ESP8266WiFi模块

ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。 ESP8266是一个完整且自成体系的Wi-Fi网络解决方案,能够搭载软件应用,或通过另一个应用处理器卸载所有Wi-Fi网络功能。在搭载应用并作为设备中唯一的应用处理器时,能够直接从外接闪存中启动。内置的高速缓冲存储器有利于提高系统性能,并减少内存需求。 ATK-ESP8266 模块采用串口(LVTTL)与 MCU(或其他串口设备)通信,内置 TCP/IP 协议栈,能够实现串口与 WIFI 之间的转换。通过 ATK-ESP8266 模块,传统的串口设备只是需要简单的串口配置,即可通过网络(WIFI)传输自己的数据。ATK-ESP8266 模块支持 LVTTL 串口,兼容 3.3V 和 5V 单片机系统。模块支持串口转 WIFI STA、串口转 AP 和 WIFI STA+WIFI AP 的模式,从而快速构建串口-WIFI 数据传输方案,方便设备使用互联网传输数据。

2023-02-25

5.0步进电机绝对定位+梯形加减速.zip

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以实现对步进电机的转向、速度和旋转角度的控制。配合以直线运动执行机构或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。步进电机一般由前后端盖、轴承、中心轴、转子铁芯、定子铁芯、定子组件、波纹垫圈、螺钉等部分构成,步进电机也叫步进器,它利用电磁学原理,将电能转换为机械能,是由缠绕在电机定子齿槽上的线圈驱动的。通常情况下,一根绕成圈状的金属丝叫做螺线管,而在电机中,绕在定子齿槽上的金属丝则叫做绕组、线圈、或相。步进电机驱动器根据外来的控制脉冲和方向信号,通过其内部的逻辑电路,控制步进电机的绕组以一定的时序正向或反向通电, 使得电机正向/反向旋转,或者锁定。   以1.8度两相步进电机为例:当两相绕组都通电励磁时,电机输出轴将静止并锁定位置。在额定电流下使电机保持锁定的最大力矩为保持力矩。如果其中一相绕组的电流发生了变向,则电机将顺着一个既定方向旋转一步(1.8度)。同理,如果是另外一项绕组的电流发生了变向,则电机将顺着与前者相反的方向旋转一步(1.8度)。当通过线圈

2022-11-17

MQ-2烟雾浓度传感器.zip

MQ-2烟雾传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当烟雾传感器所处环境中存在可燃气体时,烟雾传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该烟雾传感器气体浓度相对应的输出信号。MQ-2气体烟雾传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。这种气体传感器可检测多种可燃性气体,是一款适合多种应用的低成本烟雾传感器。1. 模块特性: MQ-2烟雾传感器在较宽的浓度范围内对可燃气体有良好的灵敏度 对液化气、丙烷、氢气 的灵敏度较高 长寿命、低成本 简单的驱动电路即可 2. 主要应用: 家庭用气体泄漏报警器 工业用可燃烟雾气体报警器 便携式烟雾气体检测器 MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。处于200~3000摄氏度时,二氧化锡表面吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从面使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至面变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息烟雾浓度越大导电率越大,

2022-11-17

12864OLED液晶屏

OLED 屏幕作为一种新型的显示技术,其自身可以发光,亮度,对比度高,功耗低,在当下备受追捧。而在我们正常的显示调整参数过程中,我们越来越多的使用这种屏幕。我们使用的一般是分辨率为 128x64 ,屏幕尺寸为 0.96 寸(本节用的是1.3寸的)。由于其较小的尺寸和比较高的分辨率,让它有着很好的显示效果和便携性。支持接口 I2C/SPI 分辨率 128×64 型号 JMD1.3D 显示颜色 白光/蓝光 外形尺寸 35.431.72.7 (mm) 显示区域 29.42*14.7 (mm) 点间距 0.23*0.23 (mm) 点大小 0.21*0.21 (mm) 管脚数 4PIN 功耗 正常显示功耗为20ma-30max 工作温度 -30℃~70℃ 存储温度 -40℃~80℃ 工作电压 5V/ 3.3V

2022-11-17

对射式红外传感器模块、测速传感器模块、计数器模块、电机测试模块、槽型光耦模块

该产品采用FTR9606高灵敏度槽型光耦器件,槽宽5mm。它由一个红外发光二极管和NPN光电三极管组成,M3固定安装孔,有输出状态指示灯,输出高电平灯灭,输出低电平灯亮。有遮挡,输出高电平。无遮挡,输出低电平。使用3.3-5VDC 宽电压LM393比较器输出,信号干净,波形好,驱动能力强,超过15mA。输出形式:数字开关量输出(0和1)。广泛用于电机转速检测,脉冲计数,位置限位等。测距离: 测速传感器输出为脉冲信号,一个脉冲中断一次;红外射线导通的时候是低电平,所以我们设置中断为低电平触法模式。一般码盘上有整数格子,无论是多少格其实原理一样,例如10格码盘,也就是有10个空格子,电机转一圈后便是射线导通10次,外部低电平触法10次;安装上面的思路,我们的测速传感器就可以发挥出效果了,我们知道一圈就有10个中断,于是我们计算中断次数,得到的总次数除于10也就是电机转动次数了,然后按照轮子的周长,计算轮子一圈是多长,就可以推算出小车已经跑多远了。 测速度: 按照测距离的思路,我们用一个MCU定时器计算,1秒内接收多少个外部中断,例如一秒内接收了20个外部中断,我们就可以判断小车速度为1秒

2022-11-17

基于PID算法下STM32控制的坡道行驶电动小车(2020年电赛)

利用 TI 的 MSP430/MSP432 平台,设计制作一个四轮电动小车。要求小车能沿着指定路线在坡道上自动循迹骑线行驶。小车必须独立运行,车外不能使用任何设备(包括电源)。小车(含电池)重量小于 1.5kg,外形尺寸在地面投影不大于 25cm×25cm。坡道用长、宽约 1m 的细木工板制作,允许板上有木质本色及自然木纹。木工板表面铺设画有 1cm×1cm 黑白间隔的纸条(以下简称为标记线)作为路线指示;标记线起始段为直线,平行于木板两边;标记线在坡顶转向 90°,转弯半径 20cm;标记线平行坡顶距≥30cm,距坡顶距离≤20cm;标记线总长度为 1m。停车标记为宽 1cm 长 5cm 的黑色线条,垂直于坡顶标记线 。

2022-10-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除