自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(465)
  • 资源 (49)
  • 收藏
  • 关注

原创 STM32 FATFS - 在SDIO的SD卡中运行fatfs

参考文章基于梁山派天空星开发板,STM32F407VET6开发板引脚。

2025-04-01 14:39:32 538

原创 STM32 FATFS - 在spi的SD卡中运行fatfs

参考文章基于野火STM32MINI开发板。

2025-04-01 14:34:18 215

原创 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

原创 (1)STM32 USB设备开发-基础知识

基于STM32开发USB的基础知识

2025-01-21 17:37:33 1475

原创 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嵌入式应用入门--wifi sta

本文介绍wifi从机,连接电脑的热点,在电脑上可以看到模块的信息

2024-07-02 10:09:00 1105 1

原创 Hi3861 OpenHarmony嵌入式应用入门--wifi hotspot

本文介绍模块作为热点,使用手机可以进行连接,并输出mac地址

2024-07-02 10:00:37 520

原创 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嵌入式应用入门--中断按键

本篇讲解gpio的中断使用方式。硬件原理图如下,与上一篇一样的电路。

2024-06-18 13:52:18 817

原创 Hi3861 OpenHarmony嵌入式应用入门--轮询按键

本篇介绍使用轮询方式读取gpio状态来判断按键状态。原理图如下。

2024-06-18 13:49:22 425

原创 Hi3861 OpenHarmony嵌入式应用入门--点灯

本篇实现对gpio的控制,通过控制输出进行gpio的点灯操作。

2024-06-17 15:31:18 679

原创 Hi3861 OpenHarmony嵌入式应用入门--hello world

开发板hello world

2024-06-17 15:18:37 716

原创 Hi3861 OpenHarmony嵌入式应用入门--总引导连接

这篇没有内容,只是根据内容先后顺序进行连接汇总。

2024-06-17 14:58:01 737

原创 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

下载后打开这个压缩文件,有两个文件夹ansi和unicode(ansi是标准编码,支持语言少;unicode是通用编码,支持更多的语言)。打开unicode文件夹,将NppAStyle.dll放置到Notepad安装目录下的plugins文件夹下。 重启Notepad。 配置NppAStyle,点击菜单栏中的"插件"--->"NppAStyle"--->"options",在代码风格中选择java。

2016-08-15

openssl-0.9.8e.tar.gz

openssl-0.9.8e.tar.gz 官方源码,未做任何改动。

2016-08-07

wpa_supplicant-0.7.3.tar.gz

wpa_supplicant-0.7.3.tar.gz官方源码文件,未做任何改动。

2016-08-07

rt2870.bin

rt2870.bin,linux内核在使用RT5370无线网卡时需要的固件文件。

2016-08-07

MT7601U驱动源码

MT7601U驱动源码,可在ubuntu,可移植到嵌入式,在我的博客中有详细过程。

2016-07-25

QTmaketarget

提取编译好的QT文件脚本。

2016-07-22

MinGW 4.4,qt使用

MINGW4.4,qt在windows下使用的mingw文件。

2016-07-22

qt4.8.5编译文件

qt4.8.5编译好的文件,使用的是ok6410官方提供的3.0.1内核, arm-linux-gcc-4.3.2.tgz编译。

2016-07-22

tslib交叉编译好的文件

tslib交叉编译好的文件,是ok6410官方3.0.1内核, arm-linux-gcc-4.3.2.tgz编译好的文件。

2016-07-22

RT5370驱动源码

RT5370的驱动源码,可以在linux下进行移植编译,已经验证成功,可以在我的博客了解移植过程。

2016-07-20

sqlite-autoconf-3130000.tar.gz

sqlite-autoconf-3130000.tar.gz

2016-05-22

glib-2.22.5.tar.gz

glib-2.22.5.tar.gz库代码

2016-05-22

libffi-3.2.1.tar.gz

libffi库源代码

2016-05-22

fs4412_led_kernel.zip

FS4412开发板led驱动程序,在fs4412内核移植实验中的配套程序。

2016-05-21

FS4412系统移植实验手册-内核移植.pdf

FS4412系统移植实验手册-内核移植

2016-05-21

FS4412系统移植uboot移植实验代码

FS4412系统移植uboot移植实验代码,包括uboot2013源码,三星加密文件,移植需要修改的代码,移植好的能用的代码

2016-05-21

FS4412系统移植实验手册-uboot移植

FS4412系统移植实验手册-uboot移植

2016-05-21

FS4412内核镜像文件3.14

FS4412 linux内核镜像文件3.14

2016-05-18

FS4412 sd卡启动u-boot文件

FS4412 sd卡启动u-boot文件

2016-05-18

FS4412 nfs镜像文件

FS4412 nfs镜像文件

2016-05-18

MyApplicationC1.zip

在android app中调用自己的c代码,这个c代码会以动态库的形式存在,并且为了表示更广泛的使用场景,我们的c程序会使用第三方库(openssl),这也是我们开发中经常用的方式。

2020-04-02

mylib-sample.zip

可以使用ndk进行编译的例子工程。程序中使用了openssl的函数,这样就形成了一个库引用库的过程,这个通了就基本都通了。

2020-04-01

从1开始写一个操作系统.pdf

使用一个STC15W56S4的板子,而且STC还提供了外设的库,我们可以直接拿来作为bsp使用。我使用的是keil5。一个支持时间片和优先级的抢占式实时系统。支持动态内存。这个系统支持任务间通讯,至少要支持信号量,最好能够支持消息队列和共享内存,并且最好能提供一种广播方式。提供一个友好的shell工具。

2019-09-26

RT-OSforSTC15W.zip

从1开始写一个操作系统 教程源码,使用一个STC15W56S4的板子,而且STC还提供了外设的库,我们可以直接拿来作为bsp使用。我使用的是keil5。一个支持时间片和优先级的抢占式实时系统。支持动态内存。这个系统支持任务间通讯,至少要支持信号量,最好能够支持消息队列和共享内存,并且最好能提供一种广播方式。提供一个友好的shell工具。

2019-09-22

CMake官网教程中的工程

CMake入门笔记--CMake官网教程中的工程,可以在有cmake的环境下直接进行编译,运行。注释详细,方便学习。

2019-08-20

dueros.zip

在与小度智能音箱对接时需要使用的php代码,这套代码是完全可以运行的,稍加改动就可以使用,但是距离实际应用还差很多,这个代码只是初期学习阶段使用。

2019-07-23

天猫精灵对接php源码

在与天猫精灵对接时需要使用的php代码,这套代码是完全可以运行的,稍加改动就可以使用,但是距离实际应用还差很多,这个代码只是初期学习阶段使用。

2019-01-27

博客使用代码

博客中提到的代码例子,上传原始文件,方便学习使用。

2018-11-18

nanomsg-1.1.4.tar.gz

nanomsg是一个套接字库,提供了几种常见的通信模式。 它旨在使网络层快速,可扩展且易于使用。 在C中实现,它适用于各种操作系统,没有进一步的依赖性。

2018-09-22

libcyaml-master.zip

用于读写YAML的C库。它使用ISO C11编写,并根据ISC许可进行许可。

2018-09-22

线程消息队列

所谓线程消息队列,就是一个普通的循环队列加上“多生产者-单(多)消费者的存/取操作”。流水线方式中的线程是单消费者,线程池方式中的线程是多消费者。

2018-09-16

inirw源码文件

主要特点: 1、支持;和#注释符号,支持行尾注释。 2、支持带引号'或"成对匹配的字符串,提取时自动去引号。引号中可带其它引号或;#注释符。 3、支持无section或空section(名称为空)。......

2018-09-16

nxjson源码文件

用C编写的非常小的JSON解析器,从以null结尾的字符串解析JSON,易于使用的树遍历API。

2018-09-16

libxml2源码文件

Libxml2是为Gnome项目开发的XML C解析器和工具包(但可以在Gnome平台之外使用),它是MIT License下的免费软件。

2018-09-16

rtlist源码

从linux内核中提取出来的链表实现,在我的博客中有说明,其中有例子程序。

2018-08-31

香橙派烧写系统工具

香橙派烧写系统工具,烧写ubuntu以及armbian等系统所使用的U盘格式化以及镜像工具。

2018-06-25

shell扫雷脚本

shell写的扫雷游戏脚本,ujhk分别是上下左右,a是确认,在ubuntu12测试通过

2017-04-03

shell俄罗斯方块脚本

用shell写的俄罗斯方块脚本,ubuntu12测试通过

2017-04-03

shell猜数字脚本

用shell写的猜数字脚本,在ubuntu12下运行通过

2017-04-03

makefiledemo

makefile递归例程,我的csdn博客有详细说明和使用方法。

2016-11-30

空空如也

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

TA关注的人

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