自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (18)
  • 收藏
  • 关注

原创 单片机增量升级 打包软件及接口介绍

本软件界面使用QT编写,相关生成补丁,压缩以及解压和打补丁均由C代码实现。生成补丁算法基于bsdiff算法,压缩基于LZ77算法。适合于rom较小的单片机使用。介绍  由于在接触NB-IOT项目时发现目前使用的一般都是全量升级方式,但是NB往往网速慢,所以全量升级花费时间较长。同时对增量升级原理比较感兴趣,故自己制作了一个简单的增量升级打包软件,原则上可用于NB等网速慢的升级(由于实现整个可移植增量升级比较麻烦,便没搞单片机上bootloader相关部分代码,并且这个软件以及打补丁代码仅在电脑上模拟过

2020-07-26 15:45:59 1297 13

原创 github下载慢的解决方法

由于github为国外服务服务器,从而导致下载过慢,对于github上的源码我们可以采用先fork到gitee的自己仓库上,这个速度比较快,然后再从gitee上git clone到自己的电脑上。gitee为锅内服务器,下载速度飞起。...

2020-04-03 08:47:30 333

原创 全志A64 U-BOOT起始串口初始化流程详解

串口执行流程,首先是/common/board_f.c中先调用void board_init_f(ulong boot_flags)该函数是汇编代码进入C代码前在_main中调用的地址重定向前的设备初始化函数,其中调用initcall_run_list(init_sequence_f)来执行init_sequence_f数组中的相关初始化函数,该数组的定义也在本文件中,其定义如下s...

2019-11-16 11:51:17 1886

原创 UBUNTU固定IP的方法

首先利用ifconfig查看网卡名称,如下图然后修改/etc/network/interfaces,如下图所示:auto后为网卡名称框内表示使用静态IP,若使用动态,则该为dhcp最下面三行表示IP地址,子网掩码以及网关。然后进入/etc/resolv.conf设置DNS如下图然后重启网络如下图:...

2019-11-07 09:22:52 343

原创 STM32初始化SD卡流程

1,初始化SDIO外设,关闭SDIO时钟。2,上电,开启时钟。3,延时最低74个时钟周期。使时钟与SD卡稳定,否则会出错。4,发送CMD0,需要返回0x01,进入Idle状态5,为了区别SD卡是2.0还是1.0,或是MMC卡,这里根据协议向上兼容的原理,首先发送只有SD2.0才有的命令CMD8,如果CMD8返回无错误,则初步判断为2.0卡,进一步发送命令循环发送CMD55+ACMD41,直...

2019-10-28 14:40:02 2178 1

原创 FREERTOS+TCP/IP学习笔记,相关术语及概念简介

Ethernet Network:数据通过以太网帧的本地以太网网络传送Ethernet Address:以太网帧通过网络将数据从一个节点移动到另一个节点,以太网帧的数据或许只是原始数据,但一般情况下会与其他协议例如可能进一步携带TCP或UDP的IP协议相关联,在同一个以太网络中,不同的节点通过MAC地址来识别,MAC地址通常写为6个由冒号分开的8位字节。在本地以太网中,每一个节点只有一个唯一MA...

2019-10-25 09:52:24 2975

原创 关于USB转串口问题

使用USB转串口会导致串口只能进行半双工通信,若在电脑向下位机发送数据时,下位机UART向USB转串口线发送数据会导致最后上位机接收到的数据出现错误。...

2019-10-24 09:30:02 860

原创 FREERTOS学习笔记,初始化第一个任务相关

注意:LR与R14表同一个寄存器。FREERTOS任务切换过程系统在进入中断前会先依次把xPSR, PC, LR, R12以及R3‐R0由硬件自动压入适当的堆栈中,之后在进入中断函数执行响应中断内容。当中断执行完后再将上述入栈数据依次出栈。关于上述寄存器:xPSR:状态字寄存器。PC:表被打断前任务指令即将执行指令的的地址,用于返回原来地址继续执行。LR:表示本次任务执行完退出后该执行...

2019-10-21 14:53:45 1295

原创 FREERTOS移植问题

在keil上往stm32f407zgt6上移植时,FreeRTISConfig.h文件中初始定义中把#ifdef(ICCARM) 改为#if defined(ICCARM)||defined(__CC_ARM)||defined(GUNC)在stack_macros.h中添加#include "portmacro.h"否则会导致栈溢出回调函数无法使用,因为无法找到portSTACK_GROWTH...

2019-10-19 17:40:05 334

原创 FREERTOS学习笔记,任务切换

FREERTOS采用滴答定时器周期性产生中断来作为心跳,作为任务切换周期,其中断处理函数如下:extern void xPortSysTickHandler(void);void SysTick_Handler(void){ /* USER CODE BEGIN SysTick_IRQn 0 */ if(xTaskGetSchedulerState()!=taskSCHEDULER...

2019-10-19 16:18:13 1324

原创 FREERTOS学习笔记,开发者支持

configASSERT()在C函数中有assert()来判断括号内表达式是否正确,若不正确则永远卡死在该函数,FREERTOS系统里,我们为了方便调试,可以定义一个类似于assert()功能的宏configASSERT()来判断问题出在哪里,当然这会导致代码量增大,且花费更多时间,故在调试完成后尽量关闭该功能。下面提供了一个可选的configASSERT()的实现方法:/* This fu...

2019-10-15 15:16:50 538

原创 FREERTOS学习笔记,任务通知

简介在之前的应用中我们通过一系列独立的任务来使用FREERTOS。但有时我们也需要任务之间相互交流。通过中间项目交流之前章节我们都是通过中间相来进行交流。例如信号量,队列等,中断或任务先将信号量或数据放入队列,然后等待其他任务的使用。任务通知(直接交流)任务通知,使得任务间可以直接交流,或使任务与中断同步。通过任务通知,中断或任务可直接将事件传递给需要的任务。任务通知功能是可选功能,若...

2019-10-15 10:18:03 257

原创 FREERTOS学习笔记,事件组

简介之前我们讲过实时嵌入式系统需要对事件进行响应,之前的章节我们讲述了将事件处理放置到任务中,任务通过信号量或队列的方式等待执行,它们的主要特征为:1,他们允许任务进入阻塞态等待事件的发生2,当事件发生时,他们使一个任务进入就绪态,该任务是所有等待任务中优先级最高的任务。事件组是另一种将事件传递给任务的方式,与通过信号量与队列传递的方式不同,他们主要特征为:1,事件组允许任务进入阻塞态等...

2019-10-14 15:37:28 1050

原创 FREERTOS学习笔记,资源管理二

互斥体与任务调度当两个需要使用同一个共享资源的任务优先级不同时,高优先级会在低优先级任务刚释放互斥体时打断低优先级任务。但当两个任务优先级相同时,任务二不会在任务一刚释放互斥体时马上抢占,而会等待任务一时间片执行完后再执行,此时会产生如下一种情况,即当任务二释放互斥体后的时间片执行完前又开始了第二次循环,从而再次获取互斥体,此时会导致切换到任务一后,任务一无法得到互斥体而再次进入阻塞,从而任...

2019-10-14 13:36:00 445

原创 FREERTOS学习笔记,资源管理一

介绍在多任务系统中,若一个任务获取了资源后,在其退出运行状态时并没有释放掉该资源,即使得资源前后状态不一致,则当其他任务或中断调用该资源时会导致数据损坏或其他问题。实例:当两个任务试图向LCD屏写东西时。1,任务A开始执行并向LCD写“HELLO WORLD”,2,任务A在输出“HELLO W”时忽然被优先级更高的任务B打断。3,任务B向LCD屏写入 “Abort, Retry, Fa...

2019-10-12 17:48:02 504

原创 FREERTOS学习笔记,中断管理三

中断服务函数中使用队列二进制以及计数信号量用于传递时间,队列用于传递事件以及数据,相关函数:xQueueSendToFrontFromISR()该函数相当于任务中的xQueueSendToFront()的中断调用安全版。xQueueSendToBackFromISR()该函数相当于任务中的xQueueSendToBack()的中断调用安全版。xQueueReceiveFromISR()...

2019-10-11 17:09:57 1411

原创 FREERTOS学习笔记,中断管理二

计数信号量二进制信号量相当于一个最多含有一个数据的队列,则计数信号量相当于可以含有多个数据的队列。任务对队列中的数据并不感兴趣,它们只关注队列中数据的个数。当FreeRTOSConfig.h中的configUSE_COUNTING_SEMAPHORES置为1时计数信号量才有效。计数信号量主要用于两种情况:1,计数事件,当有事件来临时就将一个信号量放入队列,从而根据队列中信号量个数来了解事件数...

2019-10-11 16:08:06 392

原创 FREERTOS学习笔记,中断管理一

中断与任务这里中断指的是硬件中断,优先级最低的硬件中断都会抢占优先级最高的任务进程。所以硬件中断的中断函数应尽可能地短,否则会影响任务进程。中断专用应用接口函数(API)在FREERTOS中,由于任务中调用的API接口函数许多时候需要进入阻塞状态,而硬件中断处理函数应尽可能短,故任务中调用的API函数不适用于硬件中断。故,在FREERTOS中采用了将二者的API接口函数分开的方式,任务中不可...

2019-10-11 11:47:48 777

原创 FREERTOS学习笔记,软件定时器管理

绪论软件定时器用于以后的固定时间,或以一个固定频率周期运行的函数。通过软件定时器执行的函数称为软件定时器的回调函数。软件定时器通过FREERTOS内核实施与控制,它并不需要硬件支持,与底层硬件定时器无关。软件定时器函数是可选的,使用软件定时器需要以下操作:1,编译源文件中的FreeRTOS/Source/timers.c 。2,将FreeRTOSConfig.h中的 configUSE_T...

2019-10-09 17:03:41 1145

原创 FREERTOS学习笔记,队列管理二

从多个来源接收数据在FREERTOS操作系统中,任务从多个数据源获取数据是一件很常见的事,但是,任务在处理数据时需要知道数据来自于哪里,这样才能决定如何处理该数据。为了解决这个问题,一个简单的方法是通过创建一个包含数据来源与数据本身的结构体,将该结构体存到队列中,则读任务即可知道数据的来源,其原理框图如下所示:其代码示例如下/* Define an enumerated type used...

2019-10-08 17:01:02 381

原创 FREERTOS学习笔记,队列管理一

数据存储队列可以存储有限大小,且数据类型固定的数据。队列所能存储的最大数据量称为队列的长度。队列的长度与队列里元素的大小在队列创建时就已固定。队列经常别用作为先进先出存储。实现队列的功能可通过两种方法。通过复制的方法:将要进入队列的数据复制到队列中。通过指针的方式:将需要进入队列的数据的指针放到队列中。FREERTOS采用复制的方式进行队列数据的存储。任务的入口队列可以被知道队列存在...

2019-09-30 15:43:52 268

原创 FREERTOS学习笔记,任务管理四

不带时间片的抢占调度上次我们已经讲过了带时间片的抢占调度算法,它的主要特征是只要有高优先级的到来,即使该时间片没有用完,高优先级任务依旧会抢占低优先级的处理器,就如单片机中的中断抢占资源类似,只要又中断来,会马上切换到中断函数执行,当两个优先级相同任务来时,会按时间片依次执行任务。此次我们主要介绍不带时间片的抢占调度。当有不同优先级任务时,调度算法依旧如之前带时间片的的类似,优先执行高优先级任...

2019-09-30 09:04:51 570

原创 FREERTOS学习笔记,任务管理三

空闲任务当所有任务进入阻塞状态时,此时处理器处于空闲状态,然而FREERTOS规定必须至少有一个任务处于运行状态,为了保证这种状态,调度器会自动创建一个空闲任务,当所有任务处于阻塞状态时就会自动产生一个空闲任务来执行,空闲任务具有最小优先级(设为0),为了防止空闲任务阻止其他任务的执行。注意:如果一个应用使用了vTaskDelete()来销毁一个任务,此时空闲任务并不会被其他任务饿死,因为当销...

2019-09-29 17:48:01 264

原创 FREERTOS学习笔记,任务管理二

任务优先级接上一章:xTaskCreate()参数中uxPriority表明了任务在创建时的起始优先级,当任务创建后用户可以使用vTaskPrioritySet()来更改任务优先级。有效优先级的最大数通过FreeRTOSConfig.h中的configMAX_PRIORITIES来定义,数字越大代表优先级越高,并且可以多个任务具有相同优先级。FREERTOS时间任务调度器主要通过两种方法决...

2019-09-29 11:42:09 301

原创 FREERTOS学习笔记,任务管理一

任务函数任务作为一个C函数进行执行,唯一特别之处在于其返回的类型,以及输入参数的类型都为void型,其标准格式如下所示:void ATaskFunction( void *pvParameters );任何一个任务都是一个独立的程序,将会在一个无限循环中一直执行,或并不会返回。FREESTROS中的任务函数一定不能含有return,并且不能执行到退出函数,当一个任务再也不使用时应被明确的...

2019-09-27 17:24:13 176

原创 FREERTOS笔记,堆栈相关函数

1,size_t xPortGetFreeHeapSize( void );用于返回堆栈中剩余空间(bytes)的大小,可用于节省内存空间,例如:当所有任务都已创建后,执行该函数返回的大小为2000,则下次定义configTOTAL_HEAP_SIZE的值可以减小2000。该函数在heap_3的情况下无效2,size_t xPortGetMinimumEverFreeHeapSize( vo...

2019-09-27 15:48:59 1733

原创 FREERTOS学习笔记,内存管理与变量、函数命名规则

1,数据类型TickType_t:FREEROTS设有一个类似于滴答定时器的周期性中断,通过计数中断的次数用来定义时间长度,中断个数定义为TickType_t,如果configUSE_16_BIT_TICKS被设置为1,则TickType_t即为十六位数,配置成0则它为32位数,对于8位16位单片机,其一般设置成1,32位单片机设为0。BaseType_t:用于表示单片机数据类型,当单片机为3...

2019-09-27 15:28:13 567

原创 USB复合设备

USB组合设备:具有多个接口的设备,每个接口代表一个独立的设备USB复合设备,表示几个设备通过一个USB Hub形成的单一设备,即在电脑上他只显示为一个设备。注意USB VID与PID决定了怎么检查设备描述符,并装多少个驱动程序,若VIDPID不对则装的驱动个数可能与接口数不一致。正常情况下,多个接口即对应多个设备,但要注意所有接口描述符备用接口一定要设成0,否则电脑驱动无法识别该接口。可通...

2019-09-27 09:15:13 4860 2

原创 USB详解

https://wenku.baidu.com/view/d9a5b9c06137ee06eff918b5.html USB详解https://blog.csdn.net/zouli415/article/details/79862672 各种配置描述符详解https://blog.csdn.net/zuosifengli/article/details/9164717 CCID描述...

2019-09-27 09:12:29 660 1

原创 UART接收不定长数据块(队列缓存数据块)

1,DMA,UART配置:2,代码配置所用全局变量类型:typedef struct QUE{ uint8_t res_data[100]; uint8_t FLAG; uint8_t res_counter; struct QUE *next;}QUE_UE_RES;QUE_UE_RES QUE_buff[QUE_LEN];QUE_UE_RES *UART_buff,*...

2019-09-26 09:06:21 733

原创 stm32l052低功耗配置

#执行步骤:在执行之前必做:__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);清除唤醒标志位。HAL_PWREx_EnableUltraLowPower();HAL_PWREx_EnableFastWakeUp();使能低功耗,使能快速唤醒SysTick->CTRL = 0;关闭滴答定时器之后通过HAL_PWR_EnterSTOPMode(PWR_LOW...

2019-09-26 08:50:37 1524

原创 MSP430FW428时钟树原理

MSP430FW428时钟树原理1,2,4相当于锁相环,通过晶振产生的精准ACLK时钟来作为校准输入,DC Generator与DCO组成振荡器,来产生不精确的频率f(DCO),然后经过(4),再经过 /(N+1)后分频为fDCO的1/(D*(N+1))后输入1,经过多次循环即可使得锁相环路基准频率输入与多次分频后输入频率几乎相等,然后即可输出精准震荡频率fDCO,其值为ACLK的D*(N+1...

2019-09-19 09:47:47 397

基于单片机的增量升级软件和移植代码

bsdiff的发行版本,用于小容量单片机的增量升级,包含一个软件,用于生成补丁包,和使用C写的用于移植到单片机上解码的代码

2020-07-26

hex2bin.exe

该hex2bin工具没有hex文件大小限制,目前测试一百兆以内hex随便转换,该软件通过八线程实现转化,速度快。

2020-03-30

pdf_reference_1-7.rar

本文档为新版pdf格式文档,里面详细介绍了标准PDF的具体格式,对希望了解PDF格式,以及做关于生成PDF文档的人员有很大帮助。全英文版。

2020-03-20

portplayer编解码插件

该插件用于解决portplayer播放mkv等格式视频没有声音现象,当播放mkv等格式视频出现无法解码音频时,将该插件安装在portplayer目录下即可

2020-02-25

Keil.STM32L1xx_DFP.1.2.0.rar

该压缩包为目前最新版STM32L1的pack包,用于类似于stm32L152等常用L1系列单片机,在安装keil后双击该pack包即可安装使用。解决keil下载慢的烦恼。

2020-01-15

Keil.STM32L0xx_DFP.2.0.1.rar

该压缩包为目前最新版STM32l0XX的pack包,用于类似于stm32fl051等常用l0系列单片机,在安装keil后双击该pack包即可安装使用。解决keil下载慢的烦恼。

2020-01-15

Keil.STM32F7xx_DFP.2.12.0.rar

该压缩包为目前最新版STM32F7XX的pack包,用于类似于stm32f767等常用f7系列单片机,在安装keil后双击该pack包即可安装使用。解决keil下载慢的烦恼。

2020-01-15

Keil.STM32F4xx_DFP.1.0.8.rar

该压缩包为目前最新版STM32F4XX的pack包,用于类似于stm32f407等常用f4系列单片机,在安装keil后双击该pack包即可安装使用。解决keil下载慢的烦恼。

2020-01-15

Keil.STM32F1xx_DFP.1.0.5.rar

该压缩包为目前最新版STM32F1XX的pack包,用于类似于stm32f103等常用f1系列单片机,在安装keil后双击该pack包即可安装使用。解决keil下载慢的烦恼。

2020-01-15

jdk-13.0.1_windows-x64_bin.rar

该文件为最新版13.0.1 window64位JAVA JDK,JAVA开发必备环境,用于JABA开发者使用。由于官方下载很慢,故上传到CSDN

2020-01-15

基于单片机的json编解码源码.zip

基于C语言的json编解码工具,可直接移植到stm32等单片机上,调用.h中函数即可编解码,方便移植使用

2019-09-03

文件系统代码

文件系统代码,适用于stm32,win32,lpc23xx,lpc176x,rx62n等,含有例程,可直接使用,可open,close,read,write,seek等对文件的基本操作。

2019-08-19

ISO7816-1234.zip

中文版7816-1234协议,详细介绍了通信原理及相关协议内容

2019-07-10

USB VCP驱动.zip

模拟串口驱动,安装上模拟串口USB后可自动安装相应驱动程序

2019-07-10

ccid card reader base on stm32.zip

基于STM32的CCID读卡器源码,烧到板子上可直接识别读卡器,安装驱动并实现相关功能

2019-07-10

STM32 CCID代码协议详解.pdf

详细讲述了STM32 CCID源码原理及实现方法,以及必要库文件函数使用作用与如何实现

2019-07-10

CCID协议完整版.zip

详解最新的CCID协议英文版,无更改无删减,详细而又完整。

2019-07-10

WIN7及以上系统CCIDdriver.zip

用于win7及以上系统的CCID驱动,插入CCID协议USB设备即可使用。

2019-07-05

空空如也

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

TA关注的人

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