- 博客(465)
- 资源 (49)
- 收藏
- 关注
原创 STM32 FATFS - 在flash上运行fatfs
SPI配置,根据原理图使用的是SPI1端口,这里配置为全双工主模式,并且关闭硬件NSS,波特率分频为4,使用16MHz通讯,W25Q64 在标准 SPI 模式(单线模式)下的最大 SPI 时钟频率为 80 MHz,所以只要硬件设计的好,速率完全可以满足。USE_LFN(Use Long Filename): 支持长文件名,并指定使用栈空间为缓冲区,这里不建议使用,因为这个支持很耗费flash,如果你的单片机小于256k可能都配不上这个功能,只能限制一下自己的程序,控制文件名长度了。
2025-04-01 14:28:44
372
原创 STM32 MODBUS-RTU主从站库移植
FreeModbus是一个开源的Modbus通信协议栈实现。它允许开发者在各种平台上轻松地实现Modbus通信功能,包括串口和以太网。FreeMODBUS提供了用于从设备和主站通信的功能,支持Modbus RTU和Modbus TCP协议。在工业控制和自动化领域广泛应用。
2025-03-26 11:40:13
1075
原创 (6)STM32 USB设备开发-USB键鼠一体设备
将代码中HID_KEYBOARD_REPORT_DESC_SIZE替换为HID_KEYMOUSE_REPORT_DESC_SIZE,将HID_KEYBOARD_REPORT_DESC_SIZE替换为HID_KEYMOUSE_REPORT_DESC_SIZE。在Middlewares\ST\STM32_USB_Device_Library\Class\HID\Inc\usbd_hid.h中定义HID_KEYMOUSE_REPORT_DESC_SIZE。,第一字节为1,必须与报告描述符中定义相同。
2025-01-21 17:57:40
320
原创 (5)STM32 USB设备开发-USB键盘
我们还需要在Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c文件中修改配置描述符USBD_HID_CfgFSDesc,USBD_HID_CfgHSDesc,USBD_HID_OtherSpeedCfgDesc,因为我们需要告诉PC我们还有一个端点。配置描述符需要修改,在文件Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c中。
2025-01-21 17:55:45
1567
原创 (4)STM32 USB设备开发-USB鼠标
第一个参数为USB设备的枚举,第二个设备为要发送的报文信息,第三个为报文的长度,这里我们先定义一个报文的数组,之后在不断发送数据即可。BYTE3 -- Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。|--bit6: 1 表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出。|--bit5: Y 坐标变化的符号位,1表示负数,即鼠标向下移动。|--bit4: X 坐标变化的符号位,1表示负数,即鼠标向左移动。|--bit2: 1表示中键按下。
2025-01-21 17:49:13
614
原创 (3)STM32 USB设备开发-USB存储设备
本篇为使用芯片内部flash作为USB存储设备的例程,没有知识,全是实操,按照步骤就能获得一个STM32的U盘。标蓝色的部分需要根据你之前有没有使用过这两VID和PID,如果使用过最好换一下,避免使用之前的驱动引起一些奇奇怪怪的问题。如果你使用的是大容量,MSC_MEDIA_PACKET需要配置为2048,如果不是大容量设备这里需要配置为1024。所以我们需要使用48KB之后的flash,我们这里使用60KB之后的flash。因为我这里还有200多KB的空闲,所以我可以分配200KB的flash。
2025-01-21 17:42:10
1308
原创 (2)STM32 USB设备开发-USB虚拟串口
本篇为USB虚拟串口教程,没有知识,全是实操,按照步骤就能获得一个STM32的USB虚拟串口。本例子是在野火F103MINI开发板上验证的,如果代码中出现一些外设的配置,可以参考野火F103MINI开发板原理图对照。设置外部晶振,必须要使用外部晶振,因为USB控制器需要48M的系统时钟,内部晶振无法倍频出48M。配置外部时钟配置调试口和系统基准源开启USB设备中间件中设备USB设备类型我使用了freertos v2配置外部系统时钟配置独立C和H文件USB相关的代码都在这个文件夹中。
2025-01-21 17:39:02
986
原创 ESP32在arduino3.0.xSDK上使用uart1和uart2
您几乎可以将任何引脚分配给任何串行端口的 TX 和 RX 信号,但有一些限制:任何 GPIO 引脚都可以用作串行 RX,但只有 GPIO0 和 GPIO31 之间的引脚可以用作 TX。如上图所示,几乎所有资料都显示串口1的IO是GPIO9和10,,串口2使用的是GPIO16和17.如果你是用2.x的SDK这些都是对的,但是从ESP32的SDK升级到3.0以来,串口1和串口2的默认引脚就被更换了。下表指定了 ESP32 中可用的三个 UART 端口中每个端口的 RX 和 TX 引脚。
2024-10-22 10:16:31
1436
原创 ESP32神经网络初步使用
本文档描述了如何使用Python和TensorFlow训练一个简单的神经网络模型来预测正弦函数,并将其部署到ESP32微控制器上。
2024-08-20 09:39:59
1406
原创 Hi3861 OpenHarmony嵌入式应用入门--华为 IoTDA 设备接入
华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,可以将自己的 IoT 设备 联接到华为云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云物联网平台的服 务实现设备与设备之间的控制,设备与物联网平台之间的数据信息交互。在写代码之前先准备好华为云的环境。注册华为云账号,这里就不介绍了,有手机就行,需要进行实名认证。在控制台选择北京四,因为其他的可能需要企业才能使用,作为个人开发者就用北京四吧。创建设备实例。能看到设备实例的信息我们要是用的接入方式-mqtt。
2024-07-11 13:51:51
1666
2
原创 Hi3861 OpenHarmony嵌入式应用入门--HTTPD
httpd 是 Apache HTTP Server 的守护进程名称,Apache HTTP Server 是一种广泛使用的开源网页服务器软件。本项目是从LwIP中抽取的HTTP服务器代码;`Hi3861 SDK`中已经包含了一份预编译的lwip,但没有开启HTTP服务器功能(静态库无法修改);
2024-07-11 13:40:08
630
原创 Hi3861 OpenHarmony嵌入式应用入门--SNTP
sntp(Simple Network Time Protocol)是一种网络时间协议,它是NTP(Network Time Protocol)的一个简化版本。本项目是从LwIP中抽取的SNTP代码;`Hi3861 SDK`中已经包含了一份预编译的lwip,但没有开启SNTP功能(静态库无法修改);需要保证模块连接的热点能够访问网络的。
2024-07-05 10:00:50
775
11
原创 Hi3861 OpenHarmony嵌入式应用入门--MQTT
MQTT 是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输 协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽、 高延迟或不可靠的网络而设计。这些原则也使该协议成为新兴的“机器到机器”(M2M)或物联网(IoT)世界 的连接设备,以及带宽和电池功率非常高的移动应用的理想选择。例如,它已被用于通过卫星链路与代理 通信的传感器、与医疗服务提供者的拨号连接,以及一系列家庭自动化和小型设备场景。
2024-07-05 09:57:25
1356
原创 Hi3861 OpenHarmony嵌入式应用入门--UDP Client
本篇使用的是lwip编写udp客户端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点,并且密码为PARAM_HOTSPOT_PSK。还需要准备一个udp服务,服务ip为PARAM_SERVER_ADDR宏定义,端口为PARAM_SERVER_PORT宏定义。
2024-07-04 15:00:14
757
原创 Hi3861 OpenHarmony嵌入式应用入门--UDP Server
本篇使用的是lwip编写udp服务端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点,并且密码为PARAM_HOTSPOT_PSK。
2024-07-04 14:58:19
393
原创 Hi3861 OpenHarmony嵌入式应用入门--TCP Client
本篇使用的是lwip编写tcp客户端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点,并且密码为PARAM_HOTSPOT_PSK。还需要准备一个tcp服务,服务ip为PARAM_SERVER_ADDR宏定义,端口为PARAM_SERVER_PORT宏定义。
2024-07-03 16:11:59
543
原创 Hi3861 OpenHarmony嵌入式应用入门--TCP Server
本篇使用的是lwip编写tcp服务端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点,并且密码为PARAM_HOTSPOT_PSK
2024-07-03 16:08:04
1047
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS MessageQueue
CMSIS 2.0接口中的消息(Message)功能主要涉及到实时操作系统(RTOS)中的线程间通信。在CMSIS 2.0标准中,消息通常是通过消息队列(MessageQueue)来进行处理的,以实现不同线程之间的信息交换。
2024-06-25 16:27:12
662
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS Semaphore做计数
可以将其初始化为一个特定的值(比如你想要计数的最大值),然后每次计数增加或减少时,就调用 Semaphore 的 release() 或 acquire() 方法。但请注意,这样做可能不是最直观的,因为 acquire() 方法的调用可能会阻塞,直到 Semaphore 的内部计数器大于零。
2024-06-25 16:15:56
518
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS Semaphore做同步使用
创建一个Semaphore对象,并指定一个初始的计数值(通常称为“许可”或“令牌”的数量)。这个计数值表示当前可用的资源数量或可以同时访问共享资源的线程数。当一个线程需要访问共享资源时,它会尝试从Semaphore对象中获取一个许可。如果Semaphore的当前计数值大于0,线程会立即获得一个许可,并且计数值减1。线程现在可以安全地访问共享资源。如果Semaphore的当前计数值为0(表示没有可用的许可),线程会被阻塞(挂起),直到有其他线程释放一个许可。
2024-06-25 16:14:42
498
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS semaphore作为锁
CMSIS 2.0 接口中的 Semaphore(信号量)是用于嵌入式系统中多线程或中断服务例程(ISR)之间同步和共享资源保护的重要机制。Semaphore 是一种用于控制对多个共享资源访问的同步机制。它可以被看作是一个计数器,用于跟踪可用资源的数量。
2024-06-25 16:13:00
1108
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS Mutex
CMSIS 2.0接口中的Mutex(互斥锁)是用于在多线程环境中保护共享资源的访问机制。Mutex(互斥锁)是一种特殊的信号量,用于确保同一时间只有一个线程可以访问特定的共享资源。在嵌入式系统或多线程应用中,当多个线程需要访问同一资源时,如果没有适当的同步机制,可能会导致数据不一致或其他问题。Mutex就是用来解决这类问题的。这些函数通常不能在中断服务程序(ISR)中调用,因为中断的上下文可能与这些函数的设计不符。在使用Mutex时,必须确保正确地获取和释放锁,以避免死锁或其他同步问题。
2024-06-24 11:12:21
362
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS Event
CMSIS 2.0接口使用事件标志是实时操作系统(RTOS)中一种重要的同步机制。事件标志是一种轻量级的同步原语,用于任务间或中断服务程序(ISR)之间的通信。每个事件标志对象可以包含多个标志位,通常最多为31个(因为第31位通常保留)。
2024-06-24 11:10:44
993
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS Timer
LiteOS Timer(定时器)是LiteOS操作系统中的一个重要组件,它提供了一种基于软件模拟的定时器功能,用于满足在硬件定时器数量不足时的定时需求。
2024-06-21 15:11:30
881
原创 Hi3861 OpenHarmony嵌入式应用入门--LiteOS Thread
hi3861使用的实时系统主要是基于Huawei LiteOS-M,这是华为针对物联网领域推出的轻量级物联网操作系统内核。LiteOS-M是Huawei LiteOS的一个分支,专为IoT领域构建,主要面向没有MMU(内存管理单元)的处理器。它具备轻量级、低功耗、组件丰富、快速开发等关键能力,为开发者提供“一站式”完整软件平台。技术特点:轻量级:LiteOS-M内核小巧,适合在资源受限的设备上运行。低功耗:针对IoT设备的特点,LiteOS-M优化了功耗管理,使设备在运行时更省电。
2024-06-21 14:25:31
932
原创 Hi3861 OpenHarmony嵌入式应用入门--0.96寸液晶屏 iic驱动ssd1306
使用iic驱动ssd1306,代码来源hihope\hispark_pegasus\demo\12_ssd1306是从musl libc中抽取的 sin和 cos的实现;可用于将gif动图中的帧分离出来;可用于将图片转为C数组,每个字节表示8个像素;
2024-06-20 19:24:21
1177
原创 Hi3861 OpenHarmony嵌入式应用入门--PWM 三色灯
这篇文章是讲解的pwm控制三色灯的部分,这部分也是后续全彩智能灯的基础。硬件原理如下IO管脚定义在hi-12f_v1.1.2-规格书-20211202.pdf文档中。
2024-06-20 16:24:17
729
原创 Hi3861 OpenHarmony嵌入式应用入门--ADC
本篇讲解使用ADC进行采样,并使用API将采样值转为电压。电路原理图通过hi-12f_v1.1.2-规格书-20211202.pdf 找到IO9对应的ADC通道。
2024-06-18 15:30:13
641
原创 Hi3861 OpenHarmony嵌入式应用入门--启动流程
Hi3861 的引导程序分为两部分,一部分是在芯片出厂时已经固定在 ROM,这部分的代码主要实现的功能是:芯片上电后,如果没有被打断(没有执行烧录过程)时会检验 flashboot,检验成功后跳转到flashboot 代码处运行;芯片上电后如果被打断(复位操作并执行烧录过程)时,下载 loaderboot,下载完之后校验成功跳转到 loaderboot 运行,汇编代码跳转到 C 代码,再下载其他镜像(burn、boot、signed)并烧录到 flash,结束后,按复位键,芯片启动。
2024-06-17 14:43:28
630
原创 Hi3861 OpenHarmony嵌入式应用入门--基于HI-12F开发板烧写程序
首先需要一个开发板,我已经在嘉立创上进行了开源,基于安信可hi-12f模块的开发板,集成了两个按键,一个三色灯,一个滑动变阻器,可外接一个0.96寸液晶。这篇文章先讲一下流程,如果你已经有了能下载的代码,就可以进行下载了。如果你还没有代码,是跟着我文章进行学习的,这篇可以先了解一下,等下一篇我们点灯了再进行下载操作。下载串口需要链接IO3,IO4.
2024-06-17 11:04:15
615
NppAStyle_bin.zip
2016-08-15
MyApplicationC1.zip
2020-04-02
从1开始写一个操作系统.pdf
2019-09-26
RT-OSforSTC15W.zip
2019-09-22
nanomsg-1.1.4.tar.gz
2018-09-22
inirw源码文件
2018-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人