自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (25)
  • 收藏
  • 关注

原创 自制正点原子四轴遥控器无法连接minifly

最近在群里有群友问自制遥控器无法对频的问题,我过去也踩过这个坑,已经解决了。我已经在群里回答四五次了,但可能群友没注意或者进群较晚没看到,正好今晚有空,把这个坑填上。 18年国庆后自己做了一个和正点原子minifly配套的遥控器,完全按照原子开源的资料做的,如下图所示。 但是使用的时候发现,这个遥控器不能和minifly通信,反而会和原装的遥...

2019-08-29 23:39:09 1737 3

转载 数据结构学习笔记第一篇

1 数据结构起源(1) 计算机从解决数值计算问题到解决生活中的问题(2) 现实生活中的问题涉及不同个体间的复杂联系(3) 需要在计算机程序中描述生活中个体间的联系2 数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系3 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。4 按照视点的不同,数据结构可以分为逻辑结构和物理结构 。(1) 逻辑结构包含集...

2019-06-17 23:19:52 190

原创 如何不打开KEIL或IAR直接使用ST-LINK烧录.hex文件

大家在开发STM32时,烧录.hex文件主要是两种方式,一种是通过USB转TTL,利用串口进行烧录。我在另一篇博文已经写过,链接如下https://mp.csdn.net/postedit/84644329。这种方式无需打开KEIL或者IAR,但是如果板子上没有如同正点原子开发板上的一键下载电路的话,比较麻烦,而且保留BOOT接口会增加部分电路,使用不太方便。另一种是大家常用的利用KEIL或者...

2019-05-08 10:22:55 4052 1

原创 UCOSIII存储管理

1.1、存储管理:作为一个RTOS操作系统,内存管理是必备的功能,因此UCOSIII也有内存管理能力。通常应用程序可以调用ANSI C编译器的malloc()和free()函数来动态的分配和释放内存,但是在嵌入式事实操作系统中最好不要这么做,多次这样的操作会把原来很大的一块连续存储区域逐渐地分割成许多非常小并且彼此不相邻的存储区域,这就是存储碎片。UCOSIII中提供了一种替代malloc...

2018-12-16 19:04:54 233

原创 UCOSIII事件标志组和同时等待多个内核对象

1、UCOSIII事件标志组1.1、事件标志组:有时候一个任务需要与多个事件同步,这个时候就需要使用事件标志组。事件标志组与任务之间有两种同步机制:“或”同步和“与”同步。“或”同步:等待多个事件时,任何一个事件发生 ,任务都被同步,这个就称为“或”同步。“与”同步:当所有的事件都发生时任务才被同步,这种同步机制被称为“与”同步。在UCOSIII中事件标志组为OS_FLAG_GRP,如...

2018-12-16 19:02:59 469

原创 UCOSIII消息传递

1、UCOSIII任务间通信一个任务或者中断服务程序有时候需要和另一个任务交流信息,这个就是消息。传递的过程就叫做任务间通信,任务间的消息传递可以通过2种途径:一是通过全局变量,二是通过发布消息。使用全局变量的时候每个任务或者中断服务程序都必须保证其对全局变量的独占访问。消息也可以通过消息队列作为中介发布给任务。消息包含以下几个部分:指向数据的指针,数据的长度和记录消息发布时刻的时间戳,指...

2018-12-16 19:00:24 497

原创 UCOSIII信号量与互斥信号量

1.1、信号量简介:信号量像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一旦获得了钥匙,也就意味着该任务具有进入被锁部分代码的权限。一旦执行至被锁代码段,则任务一直等待,直到对应被锁部分代码的钥匙被再次释放才能继续执行。信号量用于控制对共享资源的保护,但是现在基本用来做任务同步用。要想获取资源的任务必须执行“等待”操作,如果该资源对应的信号量有效值大于1,则任务可以获得该资源,...

2018-12-16 18:57:12 1033

原创 UCOSIII软件定时器

1.1、软件定时器简介:定时器本质是递减计数器,当计数器减到零时可以触发某种动作的执行,这个动作通过回调函数来实现。当定时器计时完成时,定义的回调函数就会被立即调用,应用程序可以有任意数量的定时器,UCOSIII中定时器的时间分辨率由一个宏OS_CFG_TMR_TASK_RATE_HZ,单位为HZ,默认为100Hz。注意!一定要避免在回调函数中使用阻塞调用或者可以阻塞或删除定时器任务的函数...

2018-12-16 18:51:42 563

原创 UCOSIII时间管理

1.1、任务延时:UCOSIII中的任务是一个无限循环并且还是一个抢占式内核,为了使高优先级的任务不至于独占CPU,可以给其他优先级较低任务获取CPU使用权的机会,UCOSIII中除空闲任务外的所有任务必须在合适的位置调用系统提供的延时函数(未必是延时函数,只要能触发任务调度就可以),让当前的任务暂停运行一段时间并进行一个任务切换。延时函数有两种,OSTimeDly()和OSTimeDly...

2018-12-15 10:27:37 512

原创 UCOSIII临界段代码保护

临界段代码也叫做临界区,是指那些必须完整连续运行,不可被打断的代码段。当访问这些临界段代码的时候需要对这些临界段代码进行保护。当宏OS_CFG_ISR_POST_DEFERRED_EN为0时,UCOSIII使用关中断的方式来保护临界段代码,当设置为1的时候就会采用给调度器上锁的方式来保护临界段代码。UCOSIII定义了一个进入临界段代码的宏:OS_CRITICAL_ENTER(),定义了两...

2018-12-14 22:40:50 1564

原创 UCOSIII编写中断服务函数

1.1、编写中断服务函数:void USART1_IRQHandler(void){  OSIntEnter(); //中断服务程序OSIntExit();} 1.2、进入中断服务函数以后使用函数OSIntEnter()void  OSIntEnter (void){     if (OSRunning != OS_STATE_OS_RUNNING)  ...

2018-12-12 20:58:50 2728

原创 UCOSIII系统内部任务与钩子函数

1.1、空闲任务:空闲任务特点:1、空闲任务是UCOSIII创建的第一个任务。2、空闲任务是UCOSIII必须创建的。3、空闲任务优先级总是为OS_CFG_PRIO_MAK-1。4、空闲任务中不能调用任何可使空闲任务进入等待态的函数!1.2、时钟节拍任务:时钟节拍任务用来跟踪任务延时和任务等待超时,任务函数为OS_TickTask(),是UCOSIII必须创建的一个任务...

2018-12-10 20:18:41 828

原创 UCOSIII任务挂起和恢复

1.1、任务的挂起:我们想暂停某个任务,但是又不想删除掉这个任务的时候就可以使用函数OSTaskSuspend()来将这个任务挂起,函数原型如下:void  OSTaskSuspend ( OS_TCB  *p_tcb,OS_ERR  *p_err)                    1.2、任务的恢复当我们想要恢复某个被挂起的任务的时候可以调用函数OSTaskResume()...

2018-12-10 20:17:09 1996

原创 C++学习笔记第十二篇

111.容器中存放的都必须是值而不能是引用,容器内部实施的是值拷贝工作,容器内可以存放指针作为数据元素,STL中的容器其实就是数据结构课程中学习的链表,栈,队列和哈希表等结构。112.线性表的典型操作:(1)size:获取当前容器中的元素数目。(2)insert:在当前元素前插入新元素。(3)erase:删除当前元素。(4)empty:判断当前容器是否为空。(5)front...

2018-12-08 11:58:41 108

原创 C++学习笔记第十一篇

 101.类模板可以被局部特化,可以指定类模板的特定实现,并要求某些类型参数仍然必须由模板的用户指定。102.为什么需要特化,而不重新定义新类:(1)特化和重新定义新类看上去没有本质区别,但是如果定义新类,那么将变成一个类模板和一个新类,使用的时候需要考虑究竟是用类模板还是用新类。(2)特化可以以统一的方式使用类模板和特化类,编译器自动优先选择特化类。103.非类型模板参数的限制...

2018-12-08 11:57:01 78

原创 C++学习笔记第十篇

91.C++中泛型编程的函数模板:(1)提供一种特殊的函数,可用不同类型进行调用。(2)看起来和普通函数很相似,区别是类型可被参数化。template <typename  T>void Swap (T&a , T&b){    T  t = a;    a = b;    b = t;}92.函数模板的语法规则;(1)tem...

2018-12-07 12:42:35 89

原创 UCOSIII任务创建与删除

1.1、写好任务创建所需的优先级,任务堆栈大小,任务控制块并声明任务函数。//任务优先级#define START_TASK_PRIO        3//任务堆栈大小   #define START_STK_SIZE         512//任务控制块OS_TCB StartTaskTCB;//任务堆栈   CPU_STK START_TASK_STK[STAR...

2018-12-06 20:27:13 1086

原创 C++学习笔记第九篇

81.对象在创建的时候由编译器对VPTR指针进行初始化,只有当对象的构造完全结束后VPTR的指向才能最终确定。父类对象的VPTR指向父类虚函数表,子类对象的VPTR指向子类虚函数表,构造函数中调用虚函数无法实现多态。82.面向对象中的抽象类:(1)抽象类可用于表现现实世界中的抽象概念。(2)抽象类是一种只能定义类型,而不能产生对象的类。(3)抽象类只能被继承并重写相关函数。(4...

2018-12-05 17:36:02 95

原创 UCOSIII任务调度和任务切换

1、UCOSIII任务调度1.1、可剥夺型任务调度:任务调度就是中止当前正在运行的任务转而去执行其他的任务。UCOSIII是可剥夺型内核,因此当一个高优先级的任务准备就绪,并且此时发生了任务调度,那么这个高优先级的任务就会获得CPU的使用权。UCOSIII中的任务调度是由任务调度器来完成的,任务调度器有2种:任务级调度器和中断级调度器。任务级调度器为函数OSSched()。...

2018-12-04 20:15:46 3661

原创 UCOSIII的任务状态

1、休眠态:任务已经在CPU的flash中了,但是还没有交给UCOSIII管理。2、就绪态:系统为任务分配了任务控制块,并且任务已经在就绪表中登记,这时这个任务就具有了运行的条件,此时任务的状态就是就绪态。3、运行态:任务获得CPU的使用权,正在运行。任何时刻只能有一个任务处于运行态。。4、等待态:正在运行的任务需要延时一段时间,或者等待某个事件,这个任务就进入了等待态,此时系统就会把...

2018-12-03 20:57:40 3009

原创 ISP和IAP的一些基本概念

 1. ISP就是in-system programming(在系统烧录,在系统编程)。以前要烧录代码bin文件到单片机内部的flash中是需要借助专用的烧录器的,比较麻烦。后来我们就需要一种不用烧录器也不用把单片机从板子上卸下来的烧录方法,这种方法就是ISP。一般ISP都是PC机通过串口把bin/hex文件直接isp到单片机内部flash中,比如利用J_LINK或者USB转TTL进行烧录。...

2018-11-30 10:44:22 7317

原创 通过USB转TTL烧录代码到STM32

烧录前先让BOOT0置1,BOOT1置0,点击烧录。烧录过程中按下复位键,然后正常烧录。下载完毕后让BOOT0置0,BOOT1置0,代码正常运行。注意:对于STM32F1系列只能使用USART1进行烧录,而STM32F4系列所有USART均可烧录代码。在STM32中文参考手册有相关描述,如下图所示。...

2018-11-30 10:25:03 13293

原创 STM32高级定时器和通用定时器使用时的一些区别

通用定时器挂载在APB1总线,高级定时器挂载在APB2总线。配置NVIC中断分组时,利用NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQN;可以配置全部通用定时器中断,但是高级定时器的中断配置是分开的,如定时器1分别是TIM1_BRK_IRQn / TIM1_UP_IRQn / TIM1_TRG_COM_IRQn/TIM1_CC_IRQn。四种分别配置不同的定...

2018-11-30 10:06:09 17759 3

原创 C++学习笔记第八篇

71.在子类对象构造的时候需要调用父类构造函数对其继承得来的成员进行初始化。在子类对象析构的时候需要调用父类析构函数对其继承得来的成员进行清理。72.子类对象在创建的时候会先调用父类的构造函数;父类构造函数执行结束后,执行子类的构造函数;当父类的构造函数有参数后,需要在子类的初始化列表中显示调用;析构函数调用的先后顺序与构造函数相反。73.当子类成员变量与父类成员变量同名时:(1)子类...

2018-11-29 21:42:50 102

原创 C++学习笔记第七篇

 61.(1)malloc和free是库函数,以字节为单位申请堆内存。(2)new和delete是关键字,以类型为单位申请堆内存。(3)malloc和free单纯的对内存进行申请与释放。(4)对于基本类型new关键字会对内存进行初始化。(5)对于类型new和delete还负责构造函数和析构函数的调用。62."剥夺"编译器对构造函数的调用尝试,C++提供了explicit关键...

2018-11-28 20:06:13 96

原创 移植MPU6050时与CRH和CRL寄存器相关的问题

暑假在根据例程对单片机与MPU6050进行通信的代码进行更改引脚时遇到一些问题,后来发现是控制IO工作模式的寄存器代码没有修改正确,下面是对CRH和CRL寄存器进行更改的方法。//IO方向设置#define MPU_SDA_IN()  {GPIOB->CRH&=0XFFF0FFFF;GPIOB->CRH|=8<<4*4;}#define MPU_SDA_OU...

2018-11-27 15:58:48 697

原创 C++学习笔记第六篇

 51.静态成员变量的定义:(1)在定义时直接通过static关键字修饰。(2)静态成员不依赖于任何对象,需要在类外单独分配空间。(3)语法规则:Type ClassName :: VarName。静态成员函数的定义:(1)在定义时直接通过static关键字修饰。(2)其余部分与普通成员函数定义相同。52.从命名空间角度:(1)类的静态成员只是类这个命名空间中的...

2018-11-26 21:05:19 73

原创 C++学习笔记第五篇

41.C++中的构造函数:(1)C++中的类可以定义与类名相同的特殊成员函数。(2)这种与类名相同的成员函数叫做构造函数。(3)构造函数在定义时可以有参数,但是没有任何返回类型的声明。(4)一般情况下C++编译器会自动调用构造函数,一些情况下则需要手动调用构造函数。42.类的成员函数和普通函数一样可以进行重载,并遵循相同的重载规则。43.当类中没有定义任何一个构造函数时,C...

2018-11-25 20:12:41 69

原创 C++学习笔记第四篇

31.符号表的概念:(1)符号表是编译器在编译过程中产生的关于源程序中语法符号的数据结构。(2)符号表是编译器自用的内部数据结构。(3)符号表不会进入最终产生的可执行程序中。32.只有用字面量初始化的const常量才会进入符号表:(1)对const常量引用会导致编译器为其分配空间。(2)虽然const常量被分配了空间,但是这个空间中的值不会被使用。(3)使用其他变量初始...

2018-11-24 16:42:38 115

原创 C++学习笔记第三篇

 21.C++中的动态内存分配:(1)C++中通过new关键字进行动态内存申请。(2)C++中的动态内存申请是基于类型进行的。(3)delete关键字用于内存释放。eg:变量申请Type* pointer=new Type;//……delete  pointer; 数组申请Type* pointer=new Type[N];//……delete[...

2018-11-22 22:58:20 98

原创 C++学习笔记第二篇

11. C++可以在函数声明时为参数提供一个默认值,当函数调用时没有指定这个参数的值,编译器会自动用默认值代替。12. 在C++中可以为函数提供占位参数:(1)占位参数只有参数类型声明,而没有参数名声明。(2)一般情况下,在函数体内部无法使用占位参数。(3)占位参数一般用于程序扩展和对C代码兼容。13. 函数重载:(1)用同一个函数名定义不同的函数。(2)用函数名和不同...

2018-11-22 20:16:50 79

原创 C++学习笔记第一篇

1. C++更强调语言的“实用性”,所有变量都可以在需要使用的时候再定义。2. register关键字请求“编译器”将局部变量存储于寄存器中,C语言无法取得register变量地址,C++可以取得register变量的地址。3. 在C语言中定义多个同名的全局变量是合法的,在C++中,不允许定义多个同名的全局变量。4. C++编译器对const常量的处理:(1) 当碰到常量声明时在符...

2018-11-21 15:16:01 104

原创 将大容量STM32F103ZET6工程改变为中容量STM32F103C8T6工程

        昨天我在博客里写了用J_LINK将大容量STM32F103ZET6工程代码生成的文件下载到中容量STM32F103C8T6中去,但这样比较麻烦,而且全片擦出会擦除掉芯片内部的bootloader,对一些项目来说不太方便,今天介绍一下如何直接将工程改变,改变后的工程就可以直接下载了。1.点击魔术棒,进入Device改变芯片型号为STM32F103C82.点击Target,将晶...

2018-11-20 15:10:20 10919 5

原创 STM32最小系统板下载失败解决方法

      一直想写关于自己学习的一些博客,曾经把自己学习uC/OS III的一些资料发表到QQ空间日志上,后来发现不太方便,所以今后发表在CSDN上面。写博客不仅仅是记录自己的学习过程,同时也是为将来自己复习用,也为更多遇到相关问题的人提供解决问题的思路。很多可能都是小问题,但当初在网上怎么都找不到答案,也可能是自己太菜,方法不正确,所以发表出来帮助更多的人。利用微型J_LINK对STM32最小...

2018-11-19 20:34:08 5927 2

arduino-1.8.12-windows.rar

arduino ide 更新于2020 3 月,18.12版本,适用于windows arduino-1.8.12-windows

2020-06-17

JLink_Windows_V680.exe

J-Flash最新版安装包,JLink_Windows_V680,于官方网站下载,更新于2020/5/28

2020-05-29

4层PCB-STM32F407ZET6开发板.zip

STM32F407ZET6开发板AD工程4层PCB文件,3D封装,板载stlink,音频,网卡等等,外设十分齐全,包含原理图和4层PCB文件,花了大价钱买来学习画四层板用的

2019-12-23

STM32F103C8T6最小系统板PCB资料.rar

STM32F103C8T6最小系统板PCB资料,含bom表,3D封装。经过打样验证,图片实证。包含原理图文件和PCB文件

2019-12-23

Arduino_STM32.zip

更新于2019/12/17。Arduino_STM32,解压放到Arduino\hardware\Arduino_STM32。这是给arduino ide用的。

2019-12-17

arduino-1.8.9-windows.rar

arduino IDE安装包,用于开发arduino。适用于Windows,更新于2019/12/17,于官方网站下载。

2019-12-17

JLink_Windows_V656a.rar

J-Flash最新版安装包,JLink_Windows_V656a,于官方网站下载,更新于2019/12/17

2019-12-17

STM32duino-bootloader-master.zip

更新于2019/12/17.STM32开发Arduino所需bootloader,STM32刷入bootloader后才能使用Arduino IDE开发。

2019-12-17

GAgent_00ESP826_04020034-1529147544607.rar

机智云ESP8266最新固件,使用老版本固件可能会产生连接上的问题,最新固件更新于2019/12/17

2019-12-17

STM32F103VET6驱动OLED(硬件SPI).zip

STM32F103VET6驱动0.96OLED(硬件SPI),代码清晰,注释详细

2019-07-16

STM32F103VET6驱动OLED(模拟SPI).zip

STM32F103VET6驱动0.96OLED(模拟SPI),代码清晰,注释详细

2019-07-16

STM32F103VET6驱动OLED(模拟IIC).zip

STM32F103VET6驱动0.96OLED(模拟IIC),注释详细,代码清晰

2019-07-16

光耦隔离模块V1.0.rar

74lvc245光耦隔离模块,用来单片机引脚与电机驱动,单片机引脚与舵机之间的隔离,防止电流烧坏单片机。常用于飞思卡尔比赛,让K60等输出的PWM通过隔离模块后在输入电机驱动。在舵机控制板等也有使用。

2019-07-15

Python 基础教程(第2版·修订版).rar

Python 基础教程(第2版·修订版)中文版,PDF版本,带书签

2019-06-16

划时代-51单片机C语言全新教程.rar

划时代-51单片机C语言全新教程,感觉和郭天祥的各有千秋,内容比较新

2019-06-16

Altium Designer Summer 09电路设计与制作 [陈学平等 编著] 2012年版.pdf

Altium Designer Summer 09电路设计与制作 [陈学平等 编著] 2012年版

2019-06-16

算法 第4版-谢路云 译 .rar

算法经典书籍,相关知识采用JAVA代码进行讲解,掌握后受益无穷

2019-06-16

C Primer Plus第6版编程练习答案.rar

C Primer Plus第6版编程练习答案,pdf文档,非扫描版本

2019-06-16

C Primer Plus第6版中文版勘误表.rar

C Primer Plus第6版中文版勘误表,word文档,勘误必备

2019-06-16

emwin5.50.7z

emwin5.50模拟器软件包,发布于2019年6月,大小在45MB左右,个人感觉更加丝滑,想要尝鲜的网友可以试一试。

2019-06-15

STM32F103驱动TSL1401线性CCD模块.rar

资料包含STM32F103驱动TSL1401线性CCD模块代码,上位机,指导手册和拉普兰德及逐飞红孩儿CCD资料。本项目使用单片机为正点原子MINI板,CCD为逐飞科技红孩儿CCD,上位机为拉普兰德线性CCD调试助手。实际任意一款STM32F103单片机均可使用本代码驱动TSL1401线性CCD模块。由于逐飞科技红孩儿TSL1401线性CCD模块已停产,可以选用龙邱科技或者平衡小车之家的线性TSL1401线性CCD模块。

2019-05-23

stlinkv2.1制作教程包含所有资料.rar

本资源是利用STM32最小系统板制作stlinkv2.1,支持虚拟串口虚拟U盘和SWD及JTAG。文件包含相关固件,教程,原理图,软件和成品图片,用户可以根据相关资料diy出自己的下载器。材料仅为STM32F103C8T6最小系统板,洞洞板和排针电阻等。

2019-05-10

基于MFRC-522和热释电模块的开关门系统

这是我的课程设计,花了两天调试出来的,功能实现很简单,进门刷卡开门,一段时间后门自动关闭,出门时热释电模块感应到有人出门,自动开门,延时一段时间后自动关门。刷卡使用RC-522模块,模拟开关门使用银燕ES08MD金属齿轮舵机,兼容蓝色SG90塑料齿轮舵机。芯片采用STM32G103C8T6最小系统板。供电采用5V,可直接使用充电宝供电。电路不太复杂,不过调试成功费了一番功夫,具体引脚连接方式十分简单,代码中有详细的注释,无需原理图就能完成制作。

2019-04-23

飞思卡尔BTN7971双电机驱动模块

这是我为准备飞思卡尔用AD16画的一块BTN7971双电机驱动模块的资料,版本为V1.1,修复了V1.0因为PWM输入口未加下拉电阻造成的稳定性较差问题,打样确定可用,可用于飞思卡尔比赛的学习。为了方便大家下载,本资源上传为RAR压缩文件,解压后文件夹内有可以直接打样的.PcbDoc文件,原理图的pdf文件,以及原理图和PCB图的截屏图片。其中的电容封装为1206,电阻和LED封装为0805.尊重作者的著作权,希望大家不要随意传播本资源,如果转载资源请注明出处。

2018-11-21

空空如也

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

TA关注的人

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