自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day15 SPI

SPI总线采用的环形结构,利用的是主从模式(主机---->从机)进行数据的传输,由于是同步通信,所以在主机发送数据的同时也会收到从机发送的数据。如果主机不打算和从机进行数据的传输,应该让NSS引脚在空闲状态下处于高电平(表示不通信),如果打算和某个从机进行单独通信的话,则需要把从机对应的NSS引脚拉低。片选引脚之间是“互斥”的,同一时刻只能有一个片选引脚为低电平。主设备和从设备都有片选引脚NSS/CS,通过片选引脚来实现主设备和多个从设备之间的通信,NSS片选引脚可以由软件控制,也可以由硬件控制。

2025-08-04 15:32:22 1047

原创 day14 ADC

模数转换(ADC)是指将以便计算机或数字系统能够处理、存储或传输这些信号。

2025-07-28 17:10:25 388

原创 day13 flash

指的是若干个存储单元的集合,每个存储单元都可以存储若干个二进制数,为了方便的操作存储单元,就为每个存储单元都分配了地址,就可以由于计算机的处理的数据量较大,并且运算速度都很快,就要求存储器的容量更大,并且存取数据的速度更快。

2025-07-24 20:45:18 943

原创 day 12 看门狗外设

特性 独立看门狗(IWDG) 窗口看门狗(WWDG)STM32F4系列的芯片提供的两个看门狗,一个叫做独立看门狗,一个叫做窗口看门狗。两个看门狗的使用流程差不多,但是相比于独立看门狗,窗口看门狗比较难伺候。如果系统“沉默”(未按时发送信号),看门狗会强制复位系统。:系统正常运行时,需定期向看门狗发送信号(通常通过写寄存器或翻转引脚)。独立看门狗原理及特性。窗口看门狗原理及特性。

2025-07-20 22:54:09 390

原创 day11 DHT11传感器采集

ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。◦ 数据传输:每次传输 40 位数据(湿度整数(8位)/小数(8位) + 温度整数(8位)/小数(8位) + 校验和(8位)),高位先发MSB。ADC会将检测到的一段连续的数值,转换为一些离散的数字量,在STM32中,ADC主要转换的对象就是IO接收到的电压。从重量最多的砝码依次与物品比对,若比物品轻则增加砝码,否则更换砝码。位,则保存数据时可以选择保存在数据寄存器的右侧或左侧。若想要计算一个物品的重量,已知当前最大的砝码重量为。

2025-07-19 23:07:27 658

原创 day10 蓝牙 BLE

本章中测试AT指令的电路为:单片机,电脑,蓝牙模块;USART1的中断服务中,将USART1接收到的数据保存到一个变量中,通过USART3发送出去,这样蓝牙就能接收到电脑发送的AT测试指令。USART3中断服务函数同理,收到后通过USART1发送回来,电脑端就可以看到蓝牙的返回信号,进而判断AT指令是否正常写入。出现原因:两个问题都是源于一个原因导致的,即每一个指令后都加一次回车,回车累计较多。下图是蓝牙通过AT指令改名字的测试,注意发送区根据指令要打\r\n,这里直接按回车效果一样。

2025-07-16 17:19:50 410

原创 day9 串口通信

因为硬件平台一般采用TTL电平信号(采用正逻辑电平,+5V等价于逻辑1,0V等价于逻辑0),但是计算机采用RS232电平信号(采用负逻辑电平,-15V~-3V 表示逻辑1,+3V~+15V 表示逻辑0)。,相当于发送数据的同时接收数据,同步通信属于连续串行传输数据,一次只传输一帧数据,相比于异步通信而言,传输效率更高,缺点是时钟必须一致。,异步通信以字符为单位进行传输,在传输一个字符的时候会添加起始位和停止位,通过起始位以及停止位来达到同步的功能。口协议只规定了按照怎样的顺序传输,但是数字量如何转换,

2025-07-14 16:24:18 1047

原创 day 8 TIM定时器

TIM6 的时钟频率为 84MHZ,如果想要降低频率,公式:1MHZ = 84MHZ /(83+1),频率就降为 1MHZ,也就意味着 TIM_CNT 寄存器累计计数 1 次的时间是 1us,如果打算利用TIM6 定时 1ms,也就是说 TIM_ARR 寄存器的值应该设置为 1000-1,只要 TIM_CNT == TIM_ARR,// 定时200ms,经过8400分频,8400us数84次,即100us数1次,1ms=1000us,10次即可,200ms 2000次。

2025-04-05 23:34:30 1007

原创 Day 7 systick延时

1s (1000000us)振荡 168000000 次,振荡 1 次的周期是 1/168us,也就是振荡 168 次花费 1us。1s (1000000us)振荡 21000000 次,振荡 1 次的周期是 1/21us,也就是振荡 21 次花费 1us。本图,首先从时钟选择开始看处理器时钟是72MHZ,参考时钟是9MHZ所以参考时钟的最大计数是处理器时钟的8倍。可以看到 Systick 定时器的时钟源可以选择内部时钟(168MHZ),或者外部时钟(8 分频之后。

2025-03-31 21:51:19 656

原创 day 6 中断

Cortex-M4 内核一共支持 256 个中断,其中有 16 个内核中断,240 个外部中断,只不过对于STM32F407 系列来说,只用到了一部分,包含了 10 个内核中断(不可屏蔽中断,无法通过软件进行控制)、82 个外部中断(可屏蔽中断,可以通过软件进行控制)。在程序运行的过程中,首先对所有的硬件进行初始化,然后在主程序中写入一个死循环,需要运行的程序按照顺序进行执行,轮询系统是一种简单可靠的方式,一般适用与在只需要按照顺序执行的并且没有外部事件的影响的情况下。//使能外部中断线0。

2025-03-24 16:09:04 722

原创 day 5 寄存器 时钟 堆栈

如果用户开启某个外设的中断,但是没有编写中断服务函数或者中断服务函数名字写错了,就会导致程序一直运行汇编文件中定义的中断服务函数,但是预定义的中断服务函数内部都是空的,所以就会跳转到无限循环、导致程序卡死。晶振的全称叫做晶体振荡器,是晶体(石英)和电子元件组成,晶振有一个非常重要的特性:机电效应(压电效应),一般晶振会提供高度稳定的频率(振荡频率是固定的),一般晶振的频率有 8MHZ、12MHZ、25MHZ、11.0592MHZ...... 晶振的单位是 HZ 频率(单位时间振荡的次数)

2025-03-20 23:41:52 735

原创 day 4-STM32-外设初始化及配置

遇到一个问题:不管是配置上拉输出还是下拉输出都会把我所有灯点亮不知道为什么,用SitBits函数可以选择性熄灭灯。但是核心问题是初始化配置的灯熄灭没有实现。寄存器(register)用于寄存一组二值代码---->>触发器构成。AHB总线(高级高性能总线)APB总线(高级外设总线)2浪费引脚资源,会把EF的9、10、13、14全部打开。触发器:能够存储1位二值信号的基本单元电路。1可以简化使能,跳转后发现可以与操作。解决:理解错了,是若上拉比较弱。SET----1(高电平)

2025-03-18 16:16:02 304

原创 day3-STM32-GPIO

led灯经过的最大电流不能超过10ma(查手册),R=U/I=(3300-300)mv/10ma=300欧姆。1.2代码自动补齐,设置过了但是有时候还是没有补全。点亮四灯时,有PE引脚也有PF引脚。添加时钟使能和Init函数。查对应需要的引脚资源。

2025-03-13 22:14:04 235

原创 day2-STM32文件创建

2、配置工程文件、打开keil软件点击new project创建新的工程,点击后选择开发板所使用的芯片选择芯片型号,选择完毕后会弹出一个框,在其中选择cotex M内核start up启动文件和其他如GPIO接口引脚资源。哈佛结构优势:流水线设计,三级:取指、译指、执指,当取指使用程序空间,执指采用数据空间时,可以处理,但传统冯诺伊曼结构不支持。注意点2,新版的keil里面找外设资源时没有标准库只有hel库,因此要么用老版本的,要么换离线模式配置。:通过独立的总线访问指令和数据,可以同时进行。

2025-03-12 11:54:13 738

原创 day1-keil软件下载及配置

破译步骤:右击keil软件以管理员身份打开>>点击右上角的file>>License...>>复制CID>>粘贴回keygen软件>>点击Genrate生成>复制生成ID号返回keil软件>>复制到Add LIC框内,出现2032即注册完成。清0:A&=~(1<<3).&有零为0,~取反,顺序是先将操作位移到第三位,然后将该位清零(1的取反),清零后和原来位置相与实现清零效果。置1:A|=(1<<3),或运算有一为1,因此先将1右移动3位与A或时可以将A置1。选择驱动方式,点击魔法棒选择。

2024-07-30 23:03:00 645

原创 FRAM11111111

CubeMX 自动生成的时序0x00600614虽然计算无报错,但SDADEL=0 导致数据保持时间不满足 Fast Mode 规范,在 16MHz APB1 频率下尤为明显。

2026-05-09 14:27:08 217

原创 DAY5.8

完成的基础驱动测试(页写入、读回校验)完成的读写驱动测试为后续“断网续传”功能(存储传感器数据 + RTC 时间戳)做准备。

2026-05-09 10:02:15 385

原创 晶振电容错误

text外接电容过大 (33pF)↓LSE 晶振无法起振↓RCC_FLAG_LSERDY 永远为 RESET↓程序卡死在 MX_RTC_Init() 循环中↓USART3 未初始化↓printf 无输出。

2026-05-07 16:18:59 197

原创 4G 模块(ML307R)电平转换

将 ML307 的 TX/RX 直接用 1.8V USB 转 TTL 模块连接电脑,确认模块本身正常。:TXS0102 的 A 侧(1.8V 电平)和 B 侧(3.3V 电平)在电路设计时。A1/A2 → ML307 的 TX/RX (1.8V 逻辑)B1/B2 → STM32 的 RX/TX (3.3V 逻辑)ML307 串口引脚:一个 3.3V,一个 2.56V。STM32 串口引脚:一个 3.3V,一个 1.8V。,导致两侧电平无法正确转换,通信失败。指令,串口无任何响应(收不到。

2026-05-07 16:17:35 342

原创 电池电压温度采集

c#define ADC_VREF 2.5f // REF3025E 输出 2.5V#define ADC_VOLTAGE_DIVIDER_RATIO 2.0f // 分压比 (R1=R2=10k)#define ADC_VOLTAGE_OFFSET -0.08f // 软件校准偏移问题原因解决方案电压漂移多通道扫描 + 异步时钟改用单通道 + 同步时钟读数偏高。

2026-05-06 12:00:54 197

原创 4.29三轴加速度计

SPI 模式必须匹配:LIS3DH 只支持 Mode 0 或 Mode 3,Mode 1/2 会导致通信失败。批量读取函数容易出错:建议先用单次读取验证数据正确性。有符号数的右移:C 语言对有符号整数的右移是实现定义的,用除法或先转成有符号 32 位再右移更安全。坐标系转换:根据实际安装方向重新映射角度,避免修改传感器本身的坐标系。

2026-04-29 17:00:59 350

原创 STM32L431 USART3 串口调试总结

经过了反复的配置调整和排查,最终确认了使用的串口是和,并成功实现了 STM32L431 与 PC 之间的串口通信。验证了 USART3 的硬件链路和 HAL 库配置是正确的,为后续发送传感器数据(如霍尔传感器状态、DHT11 温湿度等)提供了可靠的基础。

2026-04-27 16:12:16 380

原创 STM32L431 下载调试问题排查与解决

问题类型核心要点硬件BOOT0 和 NRST 的电平必须稳定,不能悬空或处于中间态调试器遇到版权警告时,换用 DAPLink 可快速排除调试器问题Keil 配置是解决非标准芯片下载问题的关键芯片 ID读出 ID 不匹配时,不要怀疑硬件损坏,应调整软件配置适配。

2026-04-23 15:14:57 323

原创 STM32F407 + ML307 阿里云物联网项目总结

功能模块状态说明DHT11 温湿度采集✅ 完成温度、湿度正常读取超声波测距✅ 完成距离数据正常测量ML307 4G 通信✅ 完成AT 指令连接稳定阿里云 MQTT 连接✅ 完成设备在线,数据上报成功数据上报(温湿度+距离)✅ 完成三合一数据正常上传结构体管理数据✅ 完成代码模块化,易扩展云平台物模型✅ 完成温度、湿度、距离属性已添加独立供电问题⚠️ 待解决需要 5V/2A 独立电源ml307.h。

2026-03-27 16:45:06 444

原创 STM32F407 + ML307 阿里云接入

成功实现了 STM32F407 通过 ML307 4G 模块连接阿里云物联网平台,并完成数据上报。测试项结果说明STM32 ↔ ML307 串口通信✅ 成功USART3 (PB10/PB11) 正常通信PDP 数据连接激活✅ 成功获取到 IPMQTT 连接阿里云✅ 成功数据上报(两步法)✅ 成功云平台数据显示✅ 成功温度 25.5℃ 正常显示电源是关键:ML307 必须用独立 5V/2A 电源,USB 供电不足会导致各种奇怪问题参数要精确。

2026-03-26 16:44:04 697

原创 AT指令测试ML407模块连接阿里云平台发生数据总结

激活数据连接用AT+CGACT,不要用AT+MIPCALLMQTT 连接参数中 ProductKey 要区分字母 I 和数字 1域名必须正确mcvi9le不是mcv91e上报数据用两步法:先发,等再发 JSONJSON 长度必须准确是 42 个字符订阅指令确认 MQTT 通道是否正常。

2026-03-24 16:48:07 1038 4

原创 day 3.17

1以下C语言程序的输出结果是()。p++;此时p指向data[0]。p++;p指向下一个元素,即data[1]。是data[1].x,值为20。++(20)表示先加 1 再使用,结果为2A经销商擅自复制并销售B公司开发的OA软件光盘已构成侵权。C企业在未知情形下从A经销商处购入100张并已安装使用,在C企业知道了所使用的软件为侵权复制的情形下,以下说法中,正确的是(0C企业的使用行为侵权,须承担赔偿责任C企业的使用行为侵权,支付合理费用后可以继续使用这100张软件光盘。

2026-03-17 10:16:51 402

原创 1111111

创建一个。

2026-03-16 13:36:56 375

原创 3.16 day

1嵌入式系统的定义强调:以通用计算机技术为基础必须包含图形化界面仅适用于工业控制领域以应用为中心,软硬件可裁剪以下叙述中,不符合软件单元测试技术要求的是().对软件设计文档规定的软件单元的功能、性能、接口等应逐项测试每个软件特性应至少被一个正常测试用例和一个异常测试用例覆盖语句覆盖率达到100%分支覆盖率达到80%以上A选项软件单元测试需依据软件设计文档,对软件单元的功能、性能、接口等各项规定逐项进行测试,这是单元测试的基本要求,符合技术要求,正确。

2026-03-16 09:35:32 530

原创 day3 3.13

正常情况下,C程序的每一行代码都会被编译。但条件编译允许你指定某些代码段。

2026-03-13 09:29:49 361

原创 day3 3.12

1如果文件系统采用二级目录结构,就可以()。缩短访问文件存储时间实现文件共享解决不同用户之间的文件同名冲突问题节省主存空间选项A解析缩短访问文件存储时间主要与文件的存储位置索引、缓存等机制相关,二级目录结构并非用于缩短访问文件存储时间,所以A选项错误。选项B解析实现文件共享通常需要特定的文件共享机制,如文件链接等,二级目录结构的主要作用不是实现文件。共享,所以B选项错误。选项C解析在二级目录结构中,将不同用户的文件分别存放在各自的用户目录下。这样,

2026-03-12 09:26:06 319

原创 STM32F407 休眠锁死 & 救活全记录

每30秒用 HC-SR04 测距,通过蓝牙(BLE-CC41-A,串口3)发送数据,其余时间休眠。旧版 J-Flash 不支持 STM32F407(无 Cortex-M4)在短接瞬间点击 J-Flash Connect。(你板上有 R69 下拉电阻,不用动)1 2 ← BOOT0 相关。3 4 ← BOOT1 相关。程序能正常运行(蓝牙发数据),但。按住复位键点下载 → 依然失败。相当于“自己把自己锁死了”效果:有时能连上,但不稳定。按住复位键点下载也无效。添加一条 Reset。

2026-03-11 15:37:18 706

原创 ../Core/Src/main.c(106): error: #20: identifier “RTC_WAKEUPCLOCK_CK_SPRE“ is undefined HAL_RT

这个编译错误是因为编译器找不到这个标识符的定义。在较新版本的 STM32 HAL 库中,这个用于选择唤醒定时器时钟源的宏已经被了。你需要根据你使用的具体STM32系列,将代码中的替换为对应的新宏定义。

2026-03-11 11:51:55 232

原创 day2.1

A选项:将判定所在模块合并到父模块中,使判定处于较高层次这属于上移判点,通过将判定所在模块上移到父模块,让判定处于更高层次,有望使判定所在模块的作用范围进入其控制范围,是适当的处理方法。B选项:将受判定影响的模块下移到控制范围内这是将受判定影响的模块下移,使其进入判定所在模块的控制范围内,能够解决作用范围不在控制范围的问题,是适当的处理方法。在划分模块时,一个模块的作用范围应该在其控制范围之内。选项A在传值方式下,是实参的值传递给形参,而形参的修改不会影响实参的值,并非形参与实参之间互相传值,所以A错误。

2026-03-11 09:36:17 304

原创 STM32CubeMX配置蓝牙BLE(四)

蓝牙模块测试蓝牙模块型号:BLE-CC41-A下图是测试常见指令得出的结果,输入完按回车然后再点击发送,并通过电脑发送 AT 指令测试蓝牙模块。

2026-03-11 08:30:00 254

原创 3.10 day1.1

明确指出两个子系统同步运行,当联机子系统出错时,备份子系统接替其工作,符合带有热备份的双重系统的定义:两个子系统同步运行,联机子系统出错时由备份子系统接替,正确。当各段流水的操作时间不同时,流水线的吞吐率是。题目给定的 8 位二进制数中,已经包含了校验位(可能是最高位或最低位,但题目没说明位置,我们就数整个 8 位的 1 的个数来判断)。6流水线的吞吐率是指单位时间流水线处理的任务数,如果各段流水的操作时间不同,则流水线的吞。如前面所述,流水线的吞吐率确实是最长流水段操作时间的倒数,所以B选项正确。

2026-03-10 13:40:22 540

原创 3.10day1打卡

C选项instruction pointer(指令指针):当中断触发时,处理器会把当前的指令指针的值保存起来,然后将指令指针指向中断服务例程(ISR)的地址,以便执行ISR代码。当两个无符号数进行比较,则在比较指令之后,可以根据CF标志位的状态来判断两个数的大小,如在”CMPAX,BX”中,当CF标志位置位时,表示()。C.地址寄存器(AR)地址寄存器不是CPU常用的内部主要部件,它的作用是保存当前CPU所要访问的内存单元或I/O设备的地址,并非用于存放下一条指令的地址,所以C选项错误。

2026-03-10 12:04:00 310

原创 Build started: Project: test*** Using Compiler ‘V5.06 update 7 (build 960)‘, folder: ‘D:\Keil_v5\AR

—你在。

2026-03-09 11:35:22 707

原创 STM32CubeMX配置串口采集超声波传感器数据(四)

目的:我手上有STM32F407ZET6开发板和HC-SR04的超声波模块,串口线,电脑。现在超声波的Trig接PB6、 Echo接PE6。超声波测得距离通过串口一在电脑端串口调试助手上显示出来,用hal库和cubemx来实现。

2026-03-06 16:50:57 762

原创 day9补充 串口显示超声波传感器测量值

目的:通过串口将超声波传感器采集到的值发送到电脑端。

2026-03-06 15:52:21 382

空空如也

空空如也

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

TA关注的人

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