- 博客(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 1366
原创 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 675
原创 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 892
原创 卡尔曼滤波算法-简易版
代码实现:/** ****************************************************************************** * @file bsp_kalman.h * @author Zxp * @version V1.0.0 * @date 2021-06-08 * @brief 卡尔曼滤波算法头文件 *******************************************************...
2021-11-25 19:29:43 867
原创 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 2251
原创 使用stm32 freertos 调试没有问题,正常运行卡死
原因就是printf 的调用导致的,cubumx默认生成的代码是没有fputc函数的
2021-11-19 14:39:12 1700
原创 STM32F427 主频超过140M 死机
死机原因就是cap1cap2没有焊接参考:http://www.openedv.com/forum.php?mod=viewthread&tid=279246&page=1
2021-11-18 18:12:35 306
原创 10.FreeRTOS学习笔记-中断管理
FreeRTOS 的中断管理支持:开/关中断。恢复中断。中断使能。中断屏蔽。可选择系统管理的中断优先级中断管理的运作机制当中断产生时,处理机将按如下的顺序执行:保存当前处理机状态信息载入异常或中断处理函数到 PC寄存器把控制权转交给处理函数并开始执行当处理函数执行完成时,恢复处理器状态信息从异常或中断中返回到前一个程序执行点关闭中断时间在操作系统中,很多时候我们会主动进入临界段,系统不允许当前状态被中断打断,故而在临界区发生的中断会被挂起,直到退出临界段时候打开中断
2021-11-18 15:23:39 531
原创 11.FreeRTOS学习笔记-内存管理
heap_1.c 管理方案是 FreeRTOS 提供所有内存管理方案中最简单的一个,它只能申请内存而不能进行内存释放,并且申请内存的时间是一个常量heap_2.c方案支持释放申请的内存,但是它不能把相邻的两个小的内存块合成一个大的内存块heap_3.c 方案只是简单的封装了标准 C 库中的 malloc()和 free()函数,并且能满足常用的编译器。...
2021-11-18 15:11:11 407
原创 9.FreeRTOS学习笔记-任务通知
基本概念每个任务都有一个 32 位的通知值任务通知可以替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32位整数或指针值)通知比通过信号量等 ICP 通信方式解除阻塞的任务要快 45%,,并且更加省 RAM 内存空间打卡宏定义 configUSE_TASK_NOTIFICATIONS 设置为 1任务通知是属于任务中附带的资源,所以在任务被创建的时候,任务通知也被初始化的任务通知可以在任务中向指定任务发送通知,也可以在中断中向指定任务发送通知只有在任务中可以等待
2021-11-18 14:40:08 946
原创 8.FreeRTOS学习笔记-软件定时器
基本概念软件定时器的回调函数类似硬件的中断服务函数,所以,回调函数也要快进快出,而且回调函数中不能有任何阻塞任务运行的情况,例如不可以使用vTaskDelay()FreeRTOS 提供的软件定时器支持单次模式和周期模式FreeRTOS 通过一个 prvTimerTask 任务(也叫守护任务 Daemon)管理软定时器只有设置 FreeRTOSConfig.h 中的宏定义 **configUSE_TIMERS **设置为 1 ,将相关代码编译进来以系统节拍周期为计时单位定时器消息队列的长度由宏
2021-11-18 12:07:37 1000
原创 7.FreeRTOS学习笔记-事件
FreeRTOS 提供的事件特点事件只与任务相关联,事件相互独立,一个 32 位的事件集合(EventBits_t 类型的变量,实际可用与表示事件的只有 24位),用于标识该任务发生的事件类型,其中每一位表示一种事件类型(0 表示该事件类型未发生、1 表示该事件类型已经发生),一共 24 种事件类型。事件仅用于同步,不提供数据传输功能事件无排队性,即多次向任务设置同一事件(如果任务还未来得及读走),等效于只设置一次允许多个任务对同一事件进行读写操作支持事件等待超时机制逻辑与逻辑或是否
2021-11-18 11:00:34 780
原创 5.FreeRTOS学习笔记- 互斥量
基本概念互斥量又称互斥信号量(本质是信号量),是一种特殊的二值信号量互斥量 支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源(如显示器、打印机)的独占式访问。任意时刻互斥量的状态只有两种,开锁或闭锁。持有该互斥量的任务也能够重复获得这个锁而不被挂起,这就是递归访问,也就是递归互斥量的特性,信号量重复获取则会被挂起互斥量与二值信号量最大的不同是:互斥量具有优先级继承机制,而信号量没有优先级继承机制优先级继承算法是指,暂时提高某个占有某种资源的低优先级任务的优先级,使之
2021-11-18 09:49:23 770
原创 6.FreeRTOS学习笔记-信号量
基本概念抽象的来讲,信号量是一个非负整数,所有获取它的任务都会将该整数减一(获取它当然是为了使用资源),当该整数值为零时,所有试图获取它的任务都将处于阻塞状态二值信号量二值信号量既可以用于临界资源访问也可以用于同步功能互斥量有优先级继承机制,二值信号量则没有这个机制二值信号量更偏向应用于同步功能(任务与任务间的同步或任务和中断间同步)而互斥量更偏向应用于临界资源的访问将二值信号量看作只有一个消息的队列因此这个队列只能为空或满计数信号量计数信号量肯定是用于计数
2021-11-17 20:18:34 950
原创 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 551
原创 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 2720
原创 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 726 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 872
原创 RTT学习笔记6-内存管理
1. RT-Thread 中的两种内存管理方式动态内存堆管理静态内存池管理2. 存分配管理算法内存堆管理内存池管理内存堆管理第一种是针对小内存块的分配管理(小内存管理算法);第二种是针对大内存块的分配管理(slab 管理算法);第三种是针对多内存堆的分配情况(memheap 管理算法)RT-Thread 将 “ZI 段结尾处” 到内存尾部的空间用作内存堆小内存管理算法主要针对系统资源比较少,一般用于小于 2MB 内存空间的系统;而 slab 内存管理算法则主
2021-11-07 14:53:01 927
原创 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 210
fal移植测试demo
2024-08-13
基于N32L406+FlashDB(时序数据库 时序数据库)+mdk5 移植教程
2024-08-01
基于N32L406MB EasyFlash参数(key-value)记录库移植
2024-07-31
N32L40x letter-shell终端裸机移植
2024-07-31
基于N32L406 Freertos letter-shell开源终端移植
2024-07-31
N32L406 移植MultiTimer教程 mdk5
2024-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人