自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Car12

主要从事Visual C++开发,Linux开发,STM32

  • 博客(503)
  • 资源 (46)
  • 收藏
  • 关注

原创 RTT使用遇见的坑

栈线程的栈溢出:bus fault:解决办法:

2024-01-18 20:59:18 251

原创 基于gd32f103移植freemodbus master 主栈

1.移植freemodbus master需要先移植RT-Thread操作系统2.移植freemodbus master协议栈在移植了RTT以后,我们需要移植就只有串口相关的函数移植freemodbus master协议栈具体步骤。

2024-01-18 13:51:20 376

原创 GD32F103C8T6移植 RTT Nano 教程

函数内部调用 rt_os_tick_callback();

2024-01-17 09:48:39 187

原创 基于GD32F103使用串口不同的中断实现freemodbus移植

中断 还是需要修改mbfunccoils.c,mbfuncdisc.c,mbfuncholding.c,mbfuncinput.c文件;中断中断需要手动发送一次数据,即需要修改mbrtu.c文件的eMBRTUSend()函数。不需要修改修改mbrtu.c文件的eMBRTUSend()函数。使用串口不同的中断实现freemodbus移植。需要修改串口使能接口函数。需要修改串口中断函数。

2024-01-16 21:12:15 214

原创 基于GD32F103移植freemodbus从机库

首先说明github下载的freemodbus开源库不可以使用,需要修改。

2024-01-16 14:52:13 338

原创 基于AT32F421的freemodbus 移植

从github下载的开源库需要修改才可以使用,不可以直接使用modbus 指令。

2024-01-15 16:52:33 200

原创 韦东山老师的从0写RTOS笔记

生产bin文件生产汇编文件。

2023-11-12 10:04:39 583

原创 【RTT驱动框架分析】-硬件定时器应用笔记和源码分析

硬件定时器应用笔记和源码分析

2023-10-26 20:03:15 425

原创 【RTT驱动框架分析】- 队列DataQueue源码分析

RTT内部队列数据结构的API和数据结构

2023-10-26 19:59:54 215

原创 唐老师讲电赛

dc-dc电源布局要点。

2023-10-10 23:04:28 2445

原创 【RTT驱动框架分析07】- adc驱动框架分析+adc中断唤醒adc驱动

实现了adc注册功能,在注册函数内部初始化io口,时钟,adc使能标定实现了adc的单通道采集功能即 convert 函数实现使能函数没有做什么工作,仅仅做了个通道的有效性判定。

2023-08-15 22:44:05 459

原创 【RTT驱动框架分析06】-pwn驱动框架分析+pwm驱动实现

因为有的芯片的PWM是具有互补输出功能的,即PWM的某一个通道是可以靠两个引脚来发出一对互补的波形。PWM 的输出频率由周期时间 period 决定,例如周期时间为 0.5ms (毫秒),则 period 值为 500000ns(纳秒),输出频率为 2KHz,占空比为 pulse / period,pulse 值不能超过 period。,第一个参数为命令,第二个参数为 PWM 设备名称,第 3 个参数为 PWM 通道,第 4 个参数为周期(单位纳秒),第 5 个参数为脉冲宽度(单位纳秒)。

2023-08-10 21:55:07 407

原创 【N32L40X】学习笔记14-在RT-thread系统中读取eeprom数据

编写eeprom测试源码。

2023-08-06 19:21:51 774

原创 【N32L40X】学习笔记13-软件IIC读写EEPROM AT24C02

8个字节每页,累计32个页通讯频率MAX = 400KAT24C02大小 2K对于at24c02 A2A1A0 这三个引脚没有使用由于设备在写周期中不会产生ACK恢复,因此这可用于确定周期何时完成(此特性可用于最大限度地提高总线吞吐量)。一旦从主服务器发出了写命令的停止条件,设备就会启动内部定时的写周期,然后就可以立即启动ACK轮询。这涉及到主服务器发送一个开始条件,然后是一个写命令的控制字节(R/W =0)。,然后主命令可以继续下一个读或写命令。该操作的流程图见图5-1。

2023-08-05 22:58:51 537

原创 RTT学习笔记12-KConfig 语法学习

KConfig 语法学习RTT 官方教程。

2023-08-04 23:25:59 514

原创 【RTT驱动框架分析05】-spi驱动框架分析

获取到 SPI 设备句柄就可以使用 SPI 设备管理接口访问 SPI 设备器件,进行数据收发。参数描述deviceSPI 设备句柄message消息指针返回——RT_NULL成功发送非空指针发送失败,返回指向剩余未发送的 message 的指针此函数可以传输一连串消息,用户可以自定义每个待传输的 message 结构体各参数的数值,从而可以很方便的控制数据传输方式。/* 发送缓冲区指针 */ void * recv_buf;/* 接收缓冲区指针 */ rt_size_t length;

2023-08-02 22:24:18 346

原创 RTT应用编程_iic应用编程

和 SPI 总线的自定义传输接口一样,I2C 总线的自定义传输接口传输的数据也是以一个消息为单位。参数 msgs[] 指向待传输的消息数组,用户可以自定义每条消息的内容,实现 I2C 总线所支持的 2 种不同的数据传输模式。在使用 I2C 总线设备前需要根据 I2C 总线设备名称获取设备句柄,进而才可以操作 I2C 总线设备,查找设备函数如下所示,以下两个读写函数封装自 rt_i2c_transfer() 函数,用于读写I2C从设备的数据,更加简单易用,推荐使用。获取到 I2C 总线设备句柄就可以使用。

2023-08-02 22:06:46 380

原创 【RTT驱动框架分析04】-I2C驱动框架分析 at24cxx

和 SPI 总线的自定义传输接口一样,I2C 总线的自定义传输接口传输的数据也是以一个消息为单位。参数 msgs[] 指向待传输的消息数组,用户可以自定义每条消息的内容,实现 I2C 总线所支持的 2 种不同的数据传输模式。在使用 I2C 总线设备前需要根据 I2C 总线设备名称获取设备句柄,进而才可以操作 I2C 总线设备,查找设备函数如下所示,以下两个读写函数封装自 rt_i2c_transfer() 函数,用于读写I2C从设备的数据,更加简单易用,推荐使用。获取到 I2C 总线设备句柄就可以使用。

2023-08-02 22:03:57 452

原创 【RTT驱动框架分析03】- sfus flash 操作库的分析和基于STM32F103RCT6+CUBEMX的SFUS移植教程

sfus 是根据flash_table 数组内部提供信息初始化spi总线和初始化sfud_flash_chip (spi flash抽象结构)信息。由下面的信息可知,不同的spi flash擦除命令不一致,读写命令是一致的。修改flash设备列表和flash id。目前支持的spi flash的目标。main.c 文件添加如下内容。修改文件sfus_port.c。这里也是以后可以添加的。到此移植的基本条件满足。

2023-07-30 19:16:59 346

原创 【RTT驱动框架分析00】-应用层函数调用流程-串口为例

RTT内部有一个全局变量数组rt_object_container数组的数量就是 rt_object_info_type 内核对象的种类,其中包含一个RT_USING_DEVICE (设备的数据类型),数组内部的每一个变量包含一个链表,链表内部就构造了一个设备链表,rt_device_find函数就是在这个数组内部根据类型找到链表,然后在链表内部根据设备名字找到rt_device_t设备。

2023-07-29 17:20:29 341

原创 【RTT驱动框架分析02】-串口驱动分析

0x00000001。

2023-07-29 17:15:20 346

原创 【RTT驱动框架分析01】-pin/gpio驱动分析

绑定的实质就是给pin_irq_hdr_tab 内部的对象成员赋值操作。在rtconfig.h中可能涉及需要开启gpio时钟。内部实质就是设置中断分组和中断的触发模式中断优先级。主要是存储用户注册中断处理函数。

2023-07-29 17:12:31 315

原创 极海APM32F4xx Tiny】学习笔记08-RTT 链表使用方法

极海APM32F4xx Tiny】学习笔记08-RTT 链表使用方法1.双向链表基本结构2.节点初始化—2个方法3.在某一个节点后边插入一个节点4.在某一个节点前边插入一个节点5.移除一个节点6.判定链表是不是空就是判定是不是自己指向自己7.获取链表长度已知结构体内部一个成员的地址can_dev,根据机构体类型struct ra_can和成员名字can_dev 得到结构体实例对象can的地址8.获取结构体的入口地址9.遍历整个链表10.已知成员的地址遍历整个链表

2023-07-29 17:07:04 292

原创 【N32L40X】学习笔记12-规则组+注入组+外部触发启动

使用定时器触发规则通道开始采集数据,采集完成后使用dma传输数据,并启动注入通道转换数据,注入通道转换完成后产生中断,中断中读物注入通道数据。

2023-07-29 17:06:47 312

原创 【N32L40X】学习笔记11-ADC规则通道采集+dma数据传输

当 ADC 转换的值高于模拟看门狗的高阈值或低于模拟看门狗的低阈值时,如果 ADC_CTRL1.AWDGIEN 已配置,则模拟看门狗标志 (ADC_STS.AWDG) 将 被 置 为 1 , 此 时 会 产 生 中 断。就是讲一个规则组转换完成后,又进行下一轮转换,注入组不支持扫描模式。连续采集就是采集这个规则组或注入组。规则组:每次触发后转换 n 个通道。扫描模式就是一轮接着一轮的扫描,注入组:每次触发后转换 1个通道。单次采集就是每次采集一个通道。

2023-07-22 09:27:28 865

原创 【N32L40X】学习笔记10-外部触发方式计数

也就是外部时钟源模式2此模式由 TIMx_SMCTRL .EXCEN 选择等于 1。计数器可以在外部触发输入 ETR 的每个上升沿或下降沿计数。

2023-07-22 09:27:15 617

原创 【N32L40X】学习笔记09-使用TIM2通道1或TIM5的通道2进行计数

外部计数模式只可以使用通道1和通道2,通道3通道4不可以用作外部计数模式。

2023-07-22 09:27:04 389

原创 【N32L40X】学习笔记08-定时器的基本定时功能-超时功能

【代码】【N32L40X】学习笔记08-定时器的基本定时功能-超时功能。

2023-07-22 09:26:35 669

原创 【N32L40X】学习笔记07-片上flash

片上flash操作需要时钟初始化,这里和其他的芯片不一样。

2023-07-22 09:26:20 179

原创 【N32L40X】学习笔记06-串口dma空闲中断+dma接收数据

8 个可独立配置的 DMA 通道。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VchCudlf-1689952378831)(./picture/dma.png)]

2023-07-22 09:25:48 690 1

原创 【N32L40X】学习笔记05-串口库(空闲中断+接收非空中断)

【代码】【N32L40X】学习笔记05-串口库(空闲中断+接收非空中断)

2023-07-22 09:25:28 479

原创 【N32L40X】学习笔记04-gpio中断库

在 NVIC 中由寄存器 NVIC_IPR0-NVIC_IPR59 共 60 个寄存器控制中断优先级,每个寄存器的每 8 位又分为一组,可以分 4 组,所以就有了 240 组宽度为 8bit 的中断优先级控制寄存器,原则上每个外部中断可配置的优先级为 0~255,通过这个表,我们就可以清楚的看到组 0~4 对应的配置关系,例如优先级分组设置为 3,那么此时所有的 82 个中断,每个中断的中断优先寄存器的高四位中的最高 3 位是抢占优先级,低 1 位是响应优先级。每个位对应的中断和 ISER 是一样的。

2023-07-22 09:25:14 732

原创 【N32L40X】学习笔记03-gpio输出库

【代码】【N32L40X】学习笔记03-gpio输出库。

2023-07-22 09:25:01 481

原创 【N32L40X】学习笔记02-gpio输入实例

【代码】【N32L40X】学习笔记02-gpio输入实例。

2023-07-22 09:24:44 713

原创 【N32L40X】学习笔记01-GPIO复用和外设gpio模式设置参考

复位期间和刚复位后,复用功能未开启,I/O 端口被配置成模拟模式。

2023-07-21 23:00:28 357

原创 【GD32F103】自定义程序库08-DMA+ADC

自定义函数库说明:将DMA先关的变量方式在一个机构体中封装起来,主要参数有使用一个枚举类型指明每个DMA绑定到那个外设来使用,枚举的最后一个元素表示DMA数量定义一个数组,将所有相关的DMA变量,填写到数组中即可,这个数组也就是后边修改的位置如果使能dma中断,dma接收数据完成产生中断。

2023-07-21 22:37:25 951

原创 【GD32F103】自定义程序库07-PWM配置库

自定义函数库说明:将pwm先关的变量方式在一个机构体中封装起来,主要参数有使用一个枚举类型指明每个pwm作为什么功能(如电机控制来使用,枚举的最后一个元素表示pwm数量定义一个数组,将所有相关的pwm变量,填写到数组中即可,这个数组也就是后边修改的位置。

2023-07-21 22:35:43 494

原创 【GD32F103】自定义程序库06-基本定时器,实现定时中断

自定义函数库说明:将TIME_BASE相关的变量方式在一个机构体中封装起来,主要参数有定时器编号定时器时钟预分频自动重载值中断编号超时中断使能超时中断回调函数使用一个枚举类型指明每个TIME_BASE作为什么功能使用,枚举的最后一个元素表示TIME_BASE数量定时器超时产生中断,调用超时回调函数,回调函数不应处理耗时任务。

2023-07-21 22:31:39 1049

原创 【GD32F103】自定义程序库05-开源库CJSON使用记录

json处理函数库CJsoncJSON.h/* Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the

2023-07-21 22:29:51 1013

原创 【GD32F103】自定义程序库04-串口空闲中断接收数据+回调函数

【代码】【GD32F103】自定义程序库04-串口空闲中断接收数据+回调函数。

2023-07-21 22:28:34 847

【瑞萨RA8D1 CPK开发板】lcd显示

【瑞萨RA8D1 CPK开发板】lcd显示

2024-10-11

【瑞萨RA8D1 CPK开发板】串口的使用和STDOUT输出重定向

串口程序

2024-10-11

【瑞萨RA8D1 CPK开发板】环境搭建、资料下载,基础工程创建

LED工程

2024-10-11

Arm Cortex-M异常分析

Arm Cortex-M异常分析

2024-10-06

N32移植sd卡和fatfs 文件系统

N32移植sd卡和fatfs 文件系统

2024-09-30

N32G45x实现sdio接口读取sd卡+sd卡的IAP升级

N32G45x实现sdio接口读取sd卡+sd卡的IAP升级

2024-09-30

N32L40x基于串口的IAP升级升级速度2Mbps

包含bootloader代码和升级工具

2024-09-30

arm mcu STM32跳转到系统厂家的dfu bootloader

111111111

2024-09-28

stm32 8080时序驱动lcd屏幕

内部含有多个驱动代码和lvgl移植示例代码

2024-09-01

fal移植测试demo

FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API (框架图如下所示),并具有以下特性: - 支持静态可配置的分区表,并可关联多个 Flash 设备; - 分区表支持 **自动装载** 。避免在多固件项目,分区表被多次定义的问题; - 代码精简,对操作系统 **无依赖** ,可运行于裸机平台,比如对资源有一定要求的 Bootloader; - 统一的操作接口。保证了文件系统、OTA、NVM(例如:[EasyFlash](https://github.com/armink-rtt-pkgs/EasyFlash)) 等对 Flash 有一定依赖的组件,底层 Flash 驱动的可重用性; - 自带基于 Finsh/MSH 的测试命令,可以通过 Shell 按字节寻址的方式操作(读写擦) Flash 或分区,方便开发者进行调试、测试;

2024-08-13

Agile Modbus移植教程-基于GD32F103C8T6+RT-Thread+mdk5

轻量型 modbus 协议栈

2024-08-13

基于N32L406+FlashDB(时序数据库 时序数据库)+mdk5 移植教程

一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。FlashDB 不仅支持传统的基于文件系统的数据库模式,而且结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命 FlashDB 提供两种数据库模式: - **键值数据库** :是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。 - **时序数据库** :时间序列数据库 (Time Series Database , 简称 TSDB),它将数据按照 **时间顺序存储** 。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高,数据写满后默认状态是**滚动写入**(也可以设置不覆盖方式)

2024-08-01

基于N32L406MB EasyFlash参数(key-value)记录库移植

[EasyFlash]是一款开源的轻量级嵌入式Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发。非常适合智能家居、可穿戴、工控、医疗、物联网等需要断电存储功能的产品,资源占用极低,支持各种 MCU 片上存储器

2024-07-31

基于N32L406的EasyLogger日志库移植教程

基于N32L406的EasyLogger日志库移植教程

2024-07-31

N32L40x letter-shell终端裸机移植

[letter shell]是一个C语言编写的,可以嵌入在程序中的嵌入式shell,主要面向嵌入式设备,以C语言函数为运行单位,可以通过命令行调用,运行程序中的函数

2024-07-31

基于N32L406 Freertos letter-shell开源终端移植

letter_shell 是一个C语言编写的,可以嵌入在程序中的嵌入式shell,主要面向嵌入式设备,以C语言函数为运行单位,可以通过命令行调用,运行程序中的函数 相对2.x版本,letter shell 3.x增加了用户管理,权限管理,以及对文件系统的初步支持 此外3.x版本修改了命令格式和定义,2.x版本的工程需要经过简单的修改才能完成迁移 若只需要使用基础功能,可以使用letter shell 2.x

2024-07-31

N32L406x+MultiButton+Mdk5移植教程

N32L406x+MultiButton+Mdk5移植教程

2024-07-30

N32L406 移植MultiTimer教程 mdk5

MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。

2024-07-30

基于N32L40x CmBacktrace mdk5平台下的移植测试

N32L40x CmBacktrace Freertos 测试使用

2024-07-30

基于stm32f103rc+lvgl8.2移植

lvgl

2024-07-28

基于N32L40x+w25q16+sfud nor flash开源库移植

基于N32L40x+w25q16+sfud nor flash开源库移植

2024-07-04

N32G45x基于串口IAP实现(含升级工具)

N32G45x基于串口IAP实现(含升级工具)

2024-06-22

中景园1.08寸128x160屏幕移植lvgl

中景园1.08寸128x160屏幕移植lvgl

2024-04-14

移植中景园的1.8寸128x160 的lvgl代码

移植中景园的1.8寸128x160 的lvgl代码

2024-04-14

N32L40x基于串口IAP实现(含升级工具)

N32L40x基于串口IAP实现(含升级工具)

2024-03-10

沁恒CH32V30X学习笔记12-PWM输出

沁恒CH32V30X学习笔记12-PWM输出

2024-02-19

沁恒CH32V30X学习笔记11-使用外部时钟模式2采集脉冲计数

沁恒CH32V30X学习笔记11-使用外部时钟模式2采集脉冲计数

2024-02-19

沁恒CH32V30X学习笔记08-基本定时器超时功能

沁恒CH32V30X学习笔记08-基本定时器超时功能

2024-02-19

沁恒CH32V30X学习笔记09-使用TIM 外部时钟1模式实现硬件计数

沁恒CH32V30X学习笔记09-使用TIM 外部时钟1模式实现硬件计数

2024-02-19

沁恒CH32V30X学习笔记08-基本定时器超时功能

沁恒CH32V30X学习笔记08-基本定时器超时功能

2024-02-19

沁恒CH32V30X学习笔记07-多功能按键框架使用

沁恒CH32V30X学习笔记07-多功能按键框架使用

2024-02-19

沁恒CH32V30X学习笔记06-串口dma接收+空闲中断组合接收数据

沁恒CH32V30X学习笔记06-串口dma接收+空闲中断组合接收数据

2024-02-18

沁恒CH32V30X学习笔记05-串口接收中断和空闲中断组合接收数据

沁恒CH32V30X学习笔记05-串口接收中断和空闲中断组合接收数据

2024-02-18

沁恒CH32V30X学习笔记02-GPIO的使用教程及2次封装驱动

沁恒CH32V30X学习笔记02-GPIO的使用教程及2次封装驱动

2024-02-18

N32L40X学习笔记06-串口dma空闲中断+dma接收数据

N32L40X学习笔记06-串口dma空闲中断+dma接收数据

2024-01-24

N32L406MBL7_DMA_ILD_UART修订.zip

N32L406MBL7_DMA_ILD_UART修订

2024-01-24

N32G430学习笔记9-串口dma方式收发数据+printf的代码版本

N32G430学习笔记9-串口dma方式收发数据+printf的代码版本

2024-01-23

基于gd32f103移植freemodbus master 主栈

基于gd32f103移植freemodbus master 主栈

2024-01-18

GD32F103C8T6移植 RTT Nano 教程

GD32F103C8T6移植 RTT Nano 教程

2024-01-17

基于GD32F103使用串口不同的中断实现freemodbus移植

基于GD32F103使用串口不同的中断实现freemodbus移植

2024-01-16

空空如也

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

TA关注的人

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