- 博客(68)
- 收藏
- 关注
原创 物联网通讯之LoRa通讯
LoRa官网:https://www.semtech.cn/loraLoRa 是 Long Range Communication的简称,狭义上的LoRa指的是一种物理层的信号调制方式,是 Semtech (先科)公司定义的一种基于Chirp扩频技术的物理层调制方式,可达到-148 dBm的接收灵敏度,以偏小的数据速率(0.3-50kbps)换取更高的通讯距离(市内3km,郊区15km)和低功耗(电池供电在特定条件下可以工作长达10年)。
2025-12-21 11:57:48
593
原创 物联网通讯之蓝牙通讯
蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDAQ、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4 GHz(2.4 至 2.485 GH) ISM(即工业、科学、医学)频段,使用IEEE802.11协议。
2025-12-21 10:34:26
956
原创 物联网通讯之以太网通讯 + W5500芯片
是韩国半导体公司WIZnet提供的一款高性价比的以太网芯片。其全球独一无二的全硬件TCPIP协议栈专利技术,解决了嵌入式以太网的接入问题,简单易用,安全稳定,是物联网设备的首选解决方案。W5500 集成了 TCP/IP 协议栈,10/100M 以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。久经市场考验的WIZnet全硬件 TCP/IP 协议栈支持 TCP,UDP,IPv4,ICMP,ARP,IGMP以及PPPoE协议。
2025-12-18 18:54:42
842
原创 stm32实现CAN通讯测试
这个是stm32f103的数据手册说明 PB8和PB9需要重定义才能使用can功能 stm32f103的默认can引脚不是 PB8和PB9。我们使用环回静默模式测试CAN能否正常工作。把接收到的报文数据发送到串口输出,看是否可以正常工作。配置Common_debug.c文件和Drivers_can.c文件。我们没有用CAN的默认引脚,而是用的重定向的引脚PB8和PB9。电路原理图—stm32需要can连接的引脚。选择好芯片配置后进行配置。
2025-12-17 15:59:20
276
原创 物联网通信之CAN通讯
参考:https://www.kvaser.cn/about-can/can-protocol-tutorial/CAN(Controller Area Network 控制器局域网,简称CAN或者CAN bus)是一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信。它基于消息传递协议,设计之初在车辆上复用通信线缆,以降低铜线使用量,后来也被其他行业所使用。CAN拥有了良好的弹性调整能力,可以在现有网络中增加节点而不用在软、硬件上做出调整。
2025-12-14 18:25:03
822
原创 存储器和寄存器
存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有了存储器计算机才具有记忆功能前面我们学习了存储器ROM和RAM,还包括我们所有的片上外设我们都可以称为存储器,STM32通过存储器映射,就可以找到这些存储器。我们编程的时候用的最多的还是寄存器,那么什么叫寄存器呢?在存储器 Block2 这块区域,设计的是片上外设,它们以4个字节为1个单元,共 32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。
2025-12-11 20:11:39
890
原创 STM32的SPI外设
介绍SPI外设,说明硬件外设读取flash的需求和寄存器的介绍 以及用HAL库的方式实现提示:以下是本篇文章正文内容,下面案例可供参考STM32 的 SPI 外设可用作通讯的主机及从机,支持最高的 SCK 时钟频率为 fpclk/2 (STM32F103 型号的芯片默认fpclk1为36MHz,fpclk2为72MHz。),完全支持 SPI 协议的 4 种模式,数据帧长度可设置为 8 位或 16 位,可设置数据 MSB 先行或 LSB 先行。它还支持双线全双工、双线单向以及单线模式。
2025-12-11 18:11:20
875
原创 stm32 HAL库实现 ADC 多通道采集
软件准备: vscode keil stm32cubemx。7.修改两个rank 的通道配置 修改我刚刚配置的通道和周期。1.打开stm32cubemx 选择对应的芯片。2.选择单线调试模式并设置高低速外部晶振。3.配置usart1 用作串口输出打印。11.使用keil打开添加c库支持文件。4.配置ADC1 的通道10 和12。1.输出重定向 在usart.c里面。9.关闭DMA通道输出的中断配置。8.配置adc的DMA模式输出。6.修改adc的常规配置。10. 写名称并导出工程。
2025-12-08 17:22:24
327
原创 ADC基本概念 + hal库实现
计算机的时间里只有0和1,ADC转换器就是把模拟的物理量(电压值)转换为计算机认识的数字量 ADC建立了模拟量和数字量之间的联系。逐次逼近型:这是最常见的ADC类型之一,通过逼近法逼近模拟信号的大小 stm32中的ADC通测采用这种类型。STM32F103系列提供了3个ADC,精度为12位,每个ADC最多有16个通道和2个内部信号源。量化阶段:采样后的模拟信号通过量化器,将其转换为相应的数字形式(二进制代码)通测,ADC需要一个已知的电源作为参考,以便将模拟电源映射到数字代码。
2025-12-08 09:22:24
253
原创 通用定时器 输入捕获 +hal实现检测pwm周期和频率
多用于测量PWM周期/频率,只要测量出连续的两个上升沿或连续的两个下降沿的时间间隔 也可以测量占空比,只要测量出连续的一个上升沿和一个下降沿的时间间隔 ,然后除以周期即可。PB6和pb12都是tim4的复用引脚线 我们可以在修改PB6为tim4如下 要查看对应的原理图。2.在stm32f1xx_it.c 里面重新回调中断函数。1、重新fput.c 在uart.c里面书写。功能:捕获输入通道上信号的上升沿或下降沿。3.配置串口输出 ,打印效果。4.配置通用定时器tim5。配置烧录自动复位重启。
2025-12-06 13:29:15
384
原创 通用定时器及pwm + HAL使用pwm实现呼吸灯
通用定时器有4个分别是:TIM2、TIM3、TIM4、TIM5。(2)向上计数(加),向下计数(减),向上/向下(先加后减)。周期:连续的两个上升沿或者连续的两个下降沿之间的宽度,我们用T表示。(6)支持针对定位的增量(正交)编码器和霍尔传感器电路。注意:在pwm驱动惯性电路时,一般不改变频率和周期。占空比:高电平宽度T除以周期T。如下可以看见TIM5的ch2就配置好并生效了。在tim.c里面写一个控制占空彼岸的函数。这样就实现了 使用pwm的呼吸灯。二,pwm(脉冲宽度调制)频率:周期的倒数1/T。
2025-12-03 17:31:47
160
原创 基本定时器 简介+ stm32 hal实现
定时器是STM32中一个非常强大的外设,功能强大,用途很广。STM32F103系列提供了8个定时器:2个基本定时器(TIM6,7),4个通用定时器(TIM2-5),2个高级定时器(TIM1和TIM8)。基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。这个2个基本定时器只能向上计数,由于没有外部IO,所以只能计时,不能对外部脉冲进行计数。1.时钟配置 时钟树配置 GPIO PA1配置(低电平有效)这2个定时器是互相独立的,不共享任何资源。3.配置生成项目工程。
2025-12-02 20:56:56
314
原创 stm32 定时器 + hal实现滴答定时器控制led闪烁
系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1 / SYSCLK,一般我们设置系统时钟SYSCLK(与AHB相同)等于72M。当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复。SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间SysTick的处理方式都是相同的。系统定时器(SysTick系统)是属于CM3内核,内嵌在NVIC中。
2025-12-02 16:12:49
375
原创 stm32 硬件i2c + hal库
验证结果 :串口不能正常输出中午 需要额外调试串口 这里就不做修改串口助手 有兴趣小伙伴 可以自己调节一下(效果正常)6.在新建的工程里面添加M24c.c 和.h 分别在src和inc文件夹里面。1.打开stm32cubuMx 并选择芯片 搜索对应自己mcu的芯片。使用vscode 打开编写 不喜欢的也可以使用keil编写。1.编写usart 重写串口输出。3.配置串口输出 usart1。7. keil打开后在添加文件。8. 修改烧录后自动重启。2.配置时钟 调试方式。一,使用软件配置阶段。
2025-12-02 10:57:18
283
原创 HAL 收发数据,轮询与中断 与重写printf
效果截图 烧录后会打印hello world!发送1234567890 回返回1234567890。main.c 里面直接调用 HAL_UART_Transmit。3.3 调整中断优先级和系统抵达定时器的优先级。6. 是有vscode 打开项目 选择对应的。一 , 轮询实现 变长(数据长度动态)实现。3.1 波特率 停止位 校验位等配置。3.配置usart1 和对应引脚。main里面的while书写。我选择的是F103ZET6。中断方式 变长数据收发。这样中断和轮询都完成了。
2025-11-28 17:37:42
189
原创 STM32CubeMX创建项目工程
6.1 选择外部时钟源 :根据开发板手册选择晶振还是其他震动(一般是晶振但是一定要以开发板手册为准)如果要修改一些配置可以再次进入stm32cubemx中进行修改 方法和上面一样在重新生成覆盖即可。9.1 修改烧写方式(stlink 或者jlink 根据自己对的烧写器来)7.3 配置gpio引脚 :直接在引脚图里面设置即可。3. 选择芯片(这里是直接搜索选择)双击选中的芯片。5.1 选择调试模式 (这里选择单线调试模式)7.1 时钟引脚配置(由步骤6生成)深黄(或者说淡褐色):复位相关的引脚。
2025-11-17 20:16:49
139
原创 nrf9151 驱动sht30并在串口打印相关温湿度信息
前提条件 :安装好vscode,并配置好相关vscode 的nrf环境配置安装官方指导链接:https://www.nordicsemi.cn/blog/nrf-connect-sdk-guide/本文章是在使用的其官方例程修改的:所以vscode 和相关环境配置一定要弄好 官网可能有点冗余 可以自行百度其他博主的文章。
2025-03-24 17:14:42
869
原创 HAL库之是stm32cubemx安装
ST制作的中间件堆栈(USB主机和设备库,STemWin)带有允许轻松重用的许可模式,只要是在ST公司的MCU 芯片上使用,库中的中间件(USB 主机/设备库,STemWin)协议栈即被允许随便修改,并可以反复使用。(2)把en.stm32cubef1-v1-8-5.zip拷贝到stm32cube的仓库中,直接解压就行了.仓库位置: C:\Users\你的用户名\STM32Cube\Repository. 用解压的文件覆盖原来的基础包.而且最最关键的是,使用HAL开发有诸多的好处。也可以选择离线安装。
2025-02-27 15:58:49
1383
原创 stm32项目模版的创建
以上就是必须选择的东西 但是我们通常还需要使用其他外设来配置例如I2C,uart,spi等可以自行选择 这里我们演示一个usart。配置主main.c函数 如果有多个文件夹分类 可以在创建文件夹放入 并且双击添加入项目。选择对应的芯片这里用stm32f103c8t6为例子。使用keil5 打开并选择这个文件夹在设置名字。编译项目 无报错 无警告 就是模版创建成功了。
2025-02-26 09:44:31
241
原创 STM32开发方式
学过51单片机的同学应该知道,51单片机教程都是讲解的寄存器开发,但是这种开发方式对于STM32就变得比较困难,因为STM32的寄存器数量是51单片机的十数倍如此多的寄存器根本无法全部记忆, 开发时需要经常的翻查芯片手册(找到对应的寄存器,在特定的比特位写入对应的值),直接操作寄存器就变得非常的费力了。但还是会有很小一部分人,喜欢去直接操作寄存器,因为这样更接近原理,知其然也知其所以然。
2025-02-25 14:40:06
510
原创 FreeRTOS移植Error: L6218E: Undefined symbol xTaskGetCurrentTaskHandle (referred from stream_buffer.o).
FreeRTOS 移植报错
2025-02-24 15:01:28
262
原创 FreeRTOS--入门学习-移植
下载后解压如图进入FreeRTOS文件Demo:示例License:许可-就是我们可以使用在哪些地方Source:FreeRTOS源码Test:是一个测试用例进入demo 找到我们对应的开发版stm32f103这是一个系列的 就可以查看使用案例,因为这个是一个纯keil文件,用到了外面的source文件夹 ,所以我们要自己新建工程 在把source 放入工程使用。
2025-02-24 14:58:46
686
原创 文件IO(知识归纳)
前置知识:数据流:是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。“流是磁盘或其它外围设备中存储的数据的源点或终点。
2024-11-06 20:34:59
878
原创 如何将本地项目上传至Gitee仓库(详细教程)
解决方法:操作命令后面加 --allow-unrelated-histories变为:git pull origin master --allow-unrelated-histories。绑定本地仓库和远程仓库 git remote add origin [远程仓库地址-就是第三点的https]Git教程https://www.runoob.com/git/git-tutorial.html。远程仓库与本地仓库同步合并:git pull origin master。1、本地电脑安装Git客户端。
2024-10-28 14:12:31
1832
1
原创 assistant assistant: could not exec ‘/usr/lib/qt6/bin/assistant‘: No such file or directory
注意:有可能执行find / -name assistant 2>/dev/null 就会出现多个assistant文件 为确保那个可以使用我们可以顺着路径点击进入 查看是否有用 (有些之前重装qt或者自己安装assistant 导致多个版本) 对有用的路径进行替换使用就可以了。1.执行find / -name assistant 2>/dev/null 查看assistant是否存在 在那个位置 (如果不存在 可以选择重新安装qt)3.执行 vi ~/.bashrc 打开文件 在文件最后一行添加。
2024-10-20 10:06:16
226
原创 Linux 和Windows创建共享文件夹实现文件共享
4.执行 username 和password 指的是Windows 的开机账号和密码 有时候vers版本不适合你当前的Linux版本 切换vers=1.0 和3.0在尝试。2.共享创建完成后可以使他的共享网络地址或者Windows ip地址-推荐使用Windows ip地址有时候 不知道什么原因他Linux解析不了网络地址。1.Windows下创建共享文件夹share右击-》属性—》共享-》选择所有人-》点击共享。共享网络地址 —共享文件夹share 右击-》属性—》共享。
2024-10-18 10:43:00
1511
1
原创 nfs-kernel-server : 依赖: nfs-common (= 1:1.3.4-2.1ubuntu5.5) 但是它将不会被安装 依赖: keyutils E: 无法修正错误,因为您要求某些
ubutton
2024-05-14 16:42:28
889
2
原创 利用指针实现两个字符串拼接的功能(尽量不能调用库函数。 提示:已知strcat库函数的原型是 char *strcat(char *strDest, const char *strSrc); strD
提示:已知strcat库函数的原型是 char *strcat(char *strDest, const char *strSrc);利用指针实现两个字符串拼接的功能(尽量不能调用库函数。strDest是目的字符串,strSrc是源串。
2024-05-06 14:54:41
510
原创 在操作系统里面打开了Ubuntu 然后vi编辑器编辑内容后没有效果了
原因:是Windows编写习惯 按了Ctrl + s在该系统里面就是停止输入,需要按ctrl + q恢复输入。我在vi创建项目后编写 然后一直卡着动不了 如下(界面没有卡住 可以其他操作)
2024-04-17 21:55:36
338
1
原创 无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机
2.用记事本打开bigdata01.vmx (这里是你的虚拟机名称,举一反三)3.使用记事本打开(将下图的true改为false 下图已改好)1,找到虚拟机目录(不同的虚拟机名字不一样 )
2024-04-08 14:05:01
1200
原创 改变input placeholder的样式 (适用于vue uniapp 中的input textarea)
【代码】改变input placeholder的样式 (适用于vue uniapp 中的input textarea)
2024-03-18 18:01:21
1238
1
原创 运行vue项目报DONE Build complete. The dist directory is ready to be deployed.解决办法
vue项目描述执行npm run build 然后报错。
2024-03-07 14:36:24
2018
原创 如何准确获取地点位置的经纬度?(高德)
使用高德地图api的坐标拾取器 地址:https://lbs.amap.com/tools/picker。在高德地图搜索选择地址 高德网址:https://www.amap.com/搜索想要的位置地址例如我搜索的是成都市金牛区。按下回车键就可以看见经纬度了。复制去新的浏览器网页。
2024-03-05 09:31:27
20058
原创 微信小程序——点击图片放大预览
data-src=“{{item}}”:自定义图片地址的属性 可以在点击事件中获取到该属性。有时候我们需要将图片弹出放大预览-使用微信官方给的方法wx.previewImage。代码解读:wx:for=“{{detail.pic}}” 循环渲染需要的图片数组。bind:tap=“previewImage” :点击触发事件的方法。这个地方是必填选项,其他的可以不填写。
2024-03-04 14:40:34
4208
原创 初次使用 uni.chooseLocation 方法时可能会出现延迟或无效果的情况
使用 uni.getLocation 方法替代 uni.chooseLocation 方法:uni.getLocation 方法可以直接获取用户的当前位置信息,不需要用户进行手动选择。:在调用 uni.chooseLocation 方法之前,先调用 uni.getSetting 方法检查用户是否已经授权获取位置信息的权限。:添加一个加载提示,在调用 uni.chooseLocation 方法之前显示加载提示,告知用户正在加载位置选择页面,请稍候。**解决方法:**确保设备的网络连接正常,并且网络稳定。
2024-02-01 10:27:54
1734
原创 uniapp 链接跳转(内部跳转和外部跳转)
在page.json里面指向我们跳转的这个内部路径(这个创建页面会自动生成):代码如下。1.先在自己uniapp项目pages.json建一个内部页面webview.vue。这样在uniapp 的多端应用 例如小程序和app也可以直接跳转到链接页面了。使用uniapp的超链接跳转在微信小程序中会出现复制链接在外面在跳转如图。这样的客户体验感不好 我们需要可以直接跳转查看。
2024-01-19 14:24:30
2191
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅