自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 linux系统线程池

本文简单介绍了线程池的概念和特点,对线程池的结构体和相关操作接口进行了设计,并提供了接口的具体实现,最后通过示例程序演示了线程池的运行过程。

2022-05-31 20:26:37 1114

原创 stm32串口发送接口

简介本文记录一下stm32标准库实现串口发送功能的接口函数。轮询方式发送串口数据1、标准库实现/*=============================通过发送函数==============================*//** * 功能:串口写字节函数 * 参数1:USARTx :串口号 * 参数2:Data :需写入的字节 * 返回值:None */void USART_Send_Byte(USART_TypeDef* USARTx, uint16_t Data){

2022-05-27 02:17:56 1926

原创 linux线程调度策略简述

本文简述了linux系统的线程调度策略及相关api。

2022-05-26 08:02:20 2959

原创 freertos的可视化追踪和运行时间统计功能

简介很多时候,我们想要知道rtos任务目前的运行情况,比如任务的状态、优先级、cpu的占用率等等,或者我们想要知道当前正系统在运行的是哪一个任务,又或者我们想要知道某一个任务运行了多长时间。这个时候,我们可以使用freertos的可视化追踪功能和运行时间统计功能来帮助我们监控系统的以上信息。运行时间统计功能我们可以通过一个基准定时器来统计rtos各个任务的运行时间,怎么统计呢?首先我们要弄清楚什么是任务运行,简单来说,任务切入到任务切出之间的时间就是这个任务这一次的运行时间;当然一个任务经常会多次切

2022-05-25 00:09:02 2602 1

原创 linux系统进程间通信方式(三):管道

本文详细介绍了匿名管道和有名管道的基本概念、特点和适用场景,并通过示例演示了两个进程如何通过管道进行通信。

2022-05-24 03:03:46 681

原创 linux系统常用命令总结

本文简单记录linux系统常用的shell命令。

2022-05-23 20:32:09 380

原创 二叉树搜索性能比较

二叉树搜索性能分析我想测试一下不同类型的二叉树搜索数据的性能是什么样的。众所周知,二叉树有以下几种类型:BSTAVL红黑树对于搜索数据,具体来讲,当树保持平衡时,其搜索时间复杂度是O(log2n),当树退化成链表时,其搜索时间复杂度变成O(n),其他情况下树的平均搜索时间复杂度就介于这两者之间。事实上红黑树的插入、删除、查找、旋转等操作都被控制在O(log2n)之中,对数级别的时间复杂度,使得红黑树尤其适用于数据无序程序高、数据量庞大且需要快速定位节点的场合。测试环境测试主机频率是4G

2022-05-22 03:54:50 767

原创 linux 自平衡AVL树

本文介绍了AVL树的基本概念和特性,进行了有关算法的实现,并通过示例程序演示了AVL树是如何实现自平衡的。

2022-05-20 03:07:38 336

原创 自平衡linux红黑树

本文简单介绍了linux系统中自平衡红黑树的概念,并进行了算法实现和示例演示。

2022-05-20 01:47:25 285

原创 linux系统非线性结构的遍历算法

本文简单介绍了BST树的各种遍历算法并提供了具体实现。

2022-05-19 10:50:15 345

原创 linux BST树算法实现

本文讲述了BST树的基本概念和算法实现,并且提供了示例。

2022-05-19 08:25:48 403

原创 shell脚本基础知识(入门)

本文会全面介绍shell脚本的基础知识。

2022-05-16 05:46:09 7199

原创 stm32通用定时器pwm输入模式

简介stm32通用定时器有多种输入模式,其他包括了pwm输入模式。原理pwm输入模式是在输入捕获的基础上使用两组输入捕获通道对同一个TIM引脚进行捕获。如下图所示:TIMx_CH1引脚输入一个pwm信号,经过输入滤波和边沿检测之后一路(TI1FP1)给到了IC1,一路(TI1FP2)给到了IC2,从而实现两个捕获通道捕获同一个pwm信号。IC1负责测量pwm信号的周期,而IC2负责测量pwm信号的脉宽。总的来说是基于输入捕获功能实现了对输入pwm信号的测量。功能实现以STM32F103RC

2022-05-14 03:03:39 4591

原创 stm32高级定时器实现pwm互补输出

简介stm32设备一般都有很多类型的定时器,常见的有systick timer、基本定时器、通用定时器、高级定时器、看门狗定时器、RTC等等,本文简单介绍高级定时器是如何实现pwm互补输出。详细我这里使用的device是stm32f103rc,他有两个高级定时器TIM1、TIM8;下面选择TIM1来实现上述功能。高级定时器的使用主要涉及以下几个结构体:timebase,用于配置计数器typedef struct{ uint16_t TIM_Prescaler; //定时器时钟

2022-05-14 02:03:20 13315 1

原创 STM32通用定时器实现pwm输出、输入捕获

简介以stm32f103rct6为例,下面说明如何使用通用定时器实现pwm输出详细stm32的定时器有多种类型,有RTC、基本定时器、通用定时器、高级定时器。下面我们选择通用定时器来实现pwm输出功能。这里我选择TIM2定时器。第一步:选择哪几个引脚输出pwm信号,这里我选择PA1、PA2,如下图:第二步:使能外设时钟;使能GPIO的时钟,使能TIM2的时钟。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//时钟使能RCC_APB2P

2022-05-12 03:46:43 5426

原创 mdk arm debug配置

简述本文简要讲述启动调试之前如何配置debug。点击魔术棒,进入debug选项界面,如下图:我们可以选择软件仿真,也可以选择硬件仿真。(软件仿真不需要接开发板和仿真器)具体配置说明如下:左侧settings:配置特定于设备的模拟器选项,例如启动功能和 BUS 特性(仅适用于某些设备)。右侧settings:配置目标驱动程序选项,例如跟踪选项。还可以使用调试配置文件 (dbgconf) 管理目标选项,如下图:选择你的debug配置(你也可以编辑调试配置文件)Limit Spe

2022-05-11 01:27:20 2290 1

原创 MDK debug时出现*** error 65: access violation at

本文提供了解决mdk debug时遇到*** error 65: access violation at 0xE0042004 : no 'write' permission问题的方法。

2022-05-09 19:16:07 2719

原创 printf重定向的相关总结

本文详细介绍了linux环境下和MCU环境下(以STM32为例)printf函数重定向的几种方法,以及实际可能遇到的一些问题和解决方法。

2022-05-09 05:35:04 7212 1

原创 mdk arm开启FPU报错问题

本文记录了mdk arm使用v6版本编译器开启fpu失败问题及解决方法。

2022-05-08 00:54:04 1426

原创 keil5编译工程常见问题汇总

本文汇总了编译keil工程时经常遇到的问题,并提供了相应的解决方案。

2022-05-08 00:14:52 11951 2

原创 git如何使用tag

本文简单介绍了使用git tag的方法。

2022-05-06 21:07:48 819

原创 linux系统进程间通信方式(二):消息队列

本文详细介绍了消息队列实现进程间通信的过程以及对消息队列可以执行的一些操作。

2022-05-05 21:32:10 946

原创 C语言的memcpy和memmove

浅谈memcpy和memmovePOSIX和C标准明确表示,使用重叠区域的mem‐cpy()会产生未定义的行为。他们两个唯一的区别是:当内存发生局部重叠时memmove函数能够保证拷贝结果的正确性,而memcpy则不能保证拷贝结果的正确性;当内存没有发生重叠的时候两个函数的结果是一样的。为什么说memcpy不能保证拷贝结果的正确性,可以看看下面这个例子。当src和dst重合(即内存重叠),如下图所示:...

2022-05-05 00:20:31 1239

原创 stm32外部中断的操作步骤

本文简单介绍了stm32的外部中断。

2022-04-30 23:03:19 4452

原创 浅谈stm32的低功耗模式

本文简单介绍了stm32的几种低功耗模式。

2022-04-30 22:04:44 4932

原创 linux的fork和vfork

本文简单介绍了linux的fork和vfork的特点和差异,并提供了代码示例演示效果。

2022-04-29 18:15:34 733

原创 linux的exit和_exit

exit()和_exit()

2022-04-29 16:55:46 1717

原创 git基本操作介绍

本文简单介绍了git常用的一些命令操作

2022-04-26 19:31:39 410

原创 linux系统如何开启和关闭core dump

本文简单讲解了core dump的开启和关闭方法,也说明了指定core dump输出路径和命令格式的方法。

2022-04-26 03:55:22 7930

原创 Linux系统命令行创建新文件

本文简单介绍了linux系统下命令行创建新文件的几种办法。

2022-04-26 02:59:13 6075

原创 freertos优化版printf、sprintf、snprintf

本文简单介绍了freertos栈效率优化版的printf相关函数

2022-04-25 21:29:51 2681

原创 freertos应用程序常见错误排查

本文总结了freertos应用程序常见的一些错误,给出了可能的原因和解决办法。

2022-04-25 20:42:13 2489

原创 freertos系统栈溢出检测机制简述

本文简单介绍了freertos系统提供的栈溢出检测机制。

2022-04-25 17:24:07 2114

原创 【浅谈插入排序】

本文简要介绍了插入排序的原理,并进行了代码实现。

2022-04-25 04:12:18 195

原创 【选择排序的稳定版本与非稳定版本】

本文简要介绍选择排序的稳定版本与非稳定版本。

2022-04-25 02:45:56 1328

原创 比较冒泡排序、选择排序和快速排序的时间(C语言实现)

本文比较了冒泡排序、选择排序和快速排序的时间,并且对冒泡做了改良;还测试了各算法的用时稳定性。

2022-04-24 19:31:26 3354 2

转载 C语言冒泡排序和快速排序的思想和实现

本文简单介绍了C语言的冒泡排序和快速排序的思想,并进行代码实现和调试。

2022-04-24 17:57:40 437

原创 【C语言冒泡排序、选择排序和快速排序】

本文主要介绍了常用的冒泡排序、快速排序和选择排序的思想和实现方法;还对冒泡进行了改良。

2022-04-24 09:24:17 2200

转载 【freeRTOS内存管理策略详解】

内存管理对应用程序和操作系统来说都非常重要。现在很多的程序漏洞和运行崩溃都和内存分配使用错误有关。 FreeRTOS操作系统将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的。这样做大有好处,可以增加系统的灵活性:不同的应用场合可以使用不同的内存分配实现,选择对自己更有利的内存管理策略。比如对于安全型的嵌入式系统,通常不允许动态内存分配,那么可以采用非常简单的内存管理策略,一经申请的内存,甚至不允许被释放。在满足设计要求...

2022-04-24 04:44:02 2525 3

原创 C语言 const、static、volatile等关键字的作用

本文简单介绍了const、volatile等关键字的作用。

2022-04-24 01:29:19 2005

空空如也

空空如也

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

TA关注的人

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