自定义博客皮肤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

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

原创 stm32f103RCT 使用ssd1306 IIC 接口 移植lkdGUI

ldkGUI关于lkdGUI的信息参考:https://blog.csdn.net/qq_23274715/article/details/80959804已经移植好的程序源码和测试代码:https://gitee.com/chejia12/lkd-gui移植ldkGUI参考官方给的参考文档手把手教你移植创建stm32f103rct6 mdk工程添加OLED驱动添加OLED sd1306库函数,添加OLED分组添加驱动源文件,添加驱动头文件,字体文件参考:https://blo

2021-11-26 19:00:05 1341

原创 3.FreeRTOS学习笔记-任务

任务状态1. 任务相关函数1.1 任务挂起函数被挂起的任务绝不会得到 CPU 的使用权,不管该任务具有什么优先级void vTaskSuspend( TaskHandle_t xTaskToSuspend )1.2 挂起所有任务=挂起调度器实质就是挂起调度器 void vTaskSuspendAll( void )1.3 任务恢复函数让任务进入就绪态 void vTaskResume( TaskHandle_t xTaskToResume )中断函数专用–中断版xTask

2021-11-29 17:58:40 660

原创 2.STM32F407ZGT6 学习笔记-移植 FreeRTOS

1. 在工程下建议FreeRTOS文件夹2. 在FreeRTOS文件夹下建立 src 和 port 文件夹 (src用于存放freertos源码,port文件夹存放内存和接口相关的文件)3. 复制freertos/source文件夹下所有c文件复制到刚刚建立的freertos/src目录下4. 复制FreeRTOSv9.0.0\FreeRTOS\Source\portablex下的MemMang和RVDS文件夹复制到刚刚建立的port问价夹下5. 将FreeRTOSv9.0.0\FreeRTOS

2021-11-27 20:41:04 866

原创 卡尔曼滤波算法-简易版

代码实现:/** ****************************************************************************** * @file bsp_kalman.h * @author Zxp * @version V1.0.0 * @date 2021-06-08 * @brief 卡尔曼滤波算法头文件 *******************************************************...

2021-11-25 19:29:43 856

原创 STM32CAN外设使用

测试单片机是STM32F427ZGT6,CAN外设的主频是45MHzCan外设配置TTCM(Time triggered communication mode)时间触发模式,用于生成时间戳,可以实现分时同步功能ABOM(Automatic bus-off management) 自动离线管理,当节点检测到它发送错误或接收错误超过一定值时,会自动进入离线状态AWUM(Automatic bus-off management),自动唤醒功能,CAN 外设可以使用软件进入低功耗的睡眠模式,如果使能了

2021-11-23 17:32:49 2226

原创 使用stm32 freertos 调试没有问题,正常运行卡死

原因就是printf 的调用导致的,cubumx默认生成的代码是没有fputc函数的

2021-11-19 14:39:12 1680

原创 STM32F427 主频超过140M 死机

死机原因就是cap1cap2没有焊接参考:http://www.openedv.com/forum.php?mod=viewthread&tid=279246&page=1

2021-11-18 18:12:35 299

原创 10.FreeRTOS学习笔记-中断管理

FreeRTOS 的中断管理支持:开/关中断。恢复中断。中断使能。中断屏蔽。可选择系统管理的中断优先级中断管理的运作机制当中断产生时,处理机将按如下的顺序执行:保存当前处理机状态信息载入异常或中断处理函数到 PC寄存器把控制权转交给处理函数并开始执行当处理函数执行完成时,恢复处理器状态信息从异常或中断中返回到前一个程序执行点关闭中断时间在操作系统中,很多时候我们会主动进入临界段,系统不允许当前状态被中断打断,故而在临界区发生的中断会被挂起,直到退出临界段时候打开中断

2021-11-18 15:23:39 521

原创 11.FreeRTOS学习笔记-内存管理

heap_1.c 管理方案是 FreeRTOS 提供所有内存管理方案中最简单的一个,它只能申请内存而不能进行内存释放,并且申请内存的时间是一个常量heap_2.c方案支持释放申请的内存,但是它不能把相邻的两个小的内存块合成一个大的内存块heap_3.c 方案只是简单的封装了标准 C 库中的 malloc()和 free()函数,并且能满足常用的编译器。...

2021-11-18 15:11:11 397

原创 9.FreeRTOS学习笔记-任务通知

基本概念每个任务都有一个 32 位的通知值任务通知可以替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32位整数或指针值)通知比通过信号量等 ICP 通信方式解除阻塞的任务要快 45%,,并且更加省 RAM 内存空间打卡宏定义 configUSE_TASK_NOTIFICATIONS 设置为 1任务通知是属于任务中附带的资源,所以在任务被创建的时候,任务通知也被初始化的任务通知可以在任务中向指定任务发送通知,也可以在中断中向指定任务发送通知只有在任务中可以等待

2021-11-18 14:40:08 929

原创 8.FreeRTOS学习笔记-软件定时器

基本概念软件定时器的回调函数类似硬件的中断服务函数,所以,回调函数也要快进快出,而且回调函数中不能有任何阻塞任务运行的情况,例如不可以使用vTaskDelay()FreeRTOS 提供的软件定时器支持单次模式和周期模式FreeRTOS 通过一个 prvTimerTask 任务(也叫守护任务 Daemon)管理软定时器只有设置 FreeRTOSConfig.h 中的宏定义 **configUSE_TIMERS **设置为 1 ,将相关代码编译进来以系统节拍周期为计时单位定时器消息队列的长度由宏

2021-11-18 12:07:37 987

原创 7.FreeRTOS学习笔记-事件

FreeRTOS 提供的事件特点事件只与任务相关联,事件相互独立,一个 32 位的事件集合(EventBits_t 类型的变量,实际可用与表示事件的只有 24位),用于标识该任务发生的事件类型,其中每一位表示一种事件类型(0 表示该事件类型未发生、1 表示该事件类型已经发生),一共 24 种事件类型。事件仅用于同步,不提供数据传输功能事件无排队性,即多次向任务设置同一事件(如果任务还未来得及读走),等效于只设置一次允许多个任务对同一事件进行读写操作支持事件等待超时机制逻辑与逻辑或是否

2021-11-18 11:00:34 772

原创 5.FreeRTOS学习笔记- 互斥量

基本概念互斥量又称互斥信号量(本质是信号量),是一种特殊的二值信号量互斥量 支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源(如显示器、打印机)的独占式访问。任意时刻互斥量的状态只有两种,开锁或闭锁。持有该互斥量的任务也能够重复获得这个锁而不被挂起,这就是递归访问,也就是递归互斥量的特性,信号量重复获取则会被挂起互斥量与二值信号量最大的不同是:互斥量具有优先级继承机制,而信号量没有优先级继承机制优先级继承算法是指,暂时提高某个占有某种资源的低优先级任务的优先级,使之

2021-11-18 09:49:23 734

原创 6.FreeRTOS学习笔记-信号量

基本概念抽象的来讲,信号量是一个非负整数,所有获取它的任务都会将该整数减一(获取它当然是为了使用资源),当该整数值为零时,所有试图获取它的任务都将处于阻塞状态二值信号量二值信号量既可以用于临界资源访问也可以用于同步功能互斥量有优先级继承机制,二值信号量则没有这个机制二值信号量更偏向应用于同步功能(任务与任务间的同步或任务和中断间同步)而互斥量更偏向应用于临界资源的访问将二值信号量看作只有一个消息的队列因此这个队列只能为空或满计数信号量计数信号量肯定是用于计数

2021-11-17 20:18:34 933

原创 1.FreeRTOS学习笔记-入门概述

FreeRTOS编程约定port 表示接口的意思int 型从不使用,只使用 short 和 long 型。在 Cortex-M 内核的 MCU 中,short 为 16 位,long 为 32位数据类型重定义在 portmacro.h 这个头文件中实现* 在 keil 中,默认 char 是无符号的变量前缀char 型变量的前缀是 c,short 型变量的前缀是 s,long 型变量的前缀是 l,portBASE_TYPE 类型变量的前缀是 x。还有其他的数据类型,比如数据结构,任

2021-11-17 19:19:06 540

原创 lwip总体架构

lwipopts.h 就是用于配置 LwIP 的相关参数的LwIP 默认会有参数的配置,存放在 opt.h 文件中第一步是通过 netif_add() 函数将我们的网卡挂载到 netif_list链表上与网卡驱动密切相关的函数有三个//low_level_init() 为网卡初始化函数static void low_level_init(struct netif *netif);//low_level_output() 函数为网卡的发送函数,它主要将内核的数据包发送出去static err_t

2021-11-14 22:20:52 2704

原创 RTT Nano+STM32F407ZGT6+LAN8720A+LWIP+CubeMX+MDK

1. 创建stm32工程2. 配置时钟时钟树程序下载、时间基调试串口3.配置ETH外设和重映射io和复位引脚4. 配置PHY外设5. 配置lwip6. 配置rt-thread没有rtt 包请参考https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-keil/an0039-nano-port-keil添加rtt nano配置rtt nano开启所有的ip

2021-11-09 17:52:17 712 2

原创 探索者STM32F407ZGT6+LWIP+LAN8720A_FREERTOS CubxMx配置教程

1. cubumx创建STM32F407ZGT6工程2. 配置时钟配置外部时钟## 配置程序下载口和hal库时基3. 配置ETH外设和复位脚配置stm32 外设配置网卡芯片数据4. 配置lwip5. 打开freeRtos打开就行不需要配置其他6. 添加网卡复位代码 HAL_GPIO_WritePin(GPIOD,GPIO_PIN_3,GPIO_PIN_RESET); HAL_Delay(50); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_

2021-11-09 16:42:56 860

原创 RTT学习笔记6-内存管理

1. RT-Thread 中的两种内存管理方式动态内存堆管理静态内存池管理2. 存分配管理算法内存堆管理内存池管理内存堆管理第一种是针对小内存块的分配管理(小内存管理算法);第二种是针对大内存块的分配管理(slab 管理算法);第三种是针对多内存堆的分配情况(memheap 管理算法)RT-Thread 将 “ZI 段结尾处” 到内存尾部的空间用作内存堆小内存管理算法主要针对系统资源比较少,一般用于小于 2MB 内存空间的系统;而 slab 内存管理算法则主

2021-11-07 14:53:01 908

原创 mdk cubemx 移植RT-Thread Nano 至stm32f424zgt6

1. CubeMX 的配置配置时钟,我的时钟是8MHz配置调试串口,我的板子调试串口是UART8配置RTT配置gpio 控制LED 3个配置串口3中断DMA方式接收数据配置中断的代码生成调试下载口配置2. mkd配置包含 finsh_config.h 文件 在rtconfig.c文件中修改启用堆内存 在rtconfig.c文件中修改否则动态创建内核对象时候就会报错修改调试串口 在board.c文件中修改使用rtt包含 rt

2021-11-07 12:03:32 202

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

基于gd32f103c8t6移植的freemodbus工程

基于gd32f103c8t6移植的freemodbus工程

2024-01-16

基于AT32F421的freemodbus 移植

移植freemodbus示例代码

2024-01-15

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

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

2023-11-12

N32L406MB在RT-thread系统中读取eeprom数据

N32L406MB在RT-thread系统中读取eeprom数据

2023-08-06

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

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

2023-07-30

can通讯测试源码包,主要是过滤规则的测试源码

can通讯测试源码包,主要是过滤规则的测试源码

2023-04-05

N32G430的freertos模板工程

N32G430的freertos模板工程

2023-03-26

国民技术N32G430C8L7串口IAP 升级代码

国民技术N32G430C8L7串口IAP 升级代码

2022-10-06

空空如也

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

TA关注的人

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