自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (8)
  • 收藏
  • 关注

原创 CanFestival移植到STM32F103

1.创建工程2.将CanFestival源码,拷贝到工程目录3.删除其它架构和编译器的代码查看include文件夹发现没有cortex-m3架构,因此我们这里借鉴AVR架构进行修改将AVR文件夹重命名为STM32,并删除其它架构文件夹打开STM32文件夹,将里面avr相关的文件删除,我们用的开发环境是MDK,因此将iar相关文...

2019-03-14 13:00:08 6759 11

原创 CanFestival移植准备工作

CanFestival是一种开源的CANOpen协议栈,可以很容易在网上下载CanFestival-3.10。objdictedit是CanFestival的字典生成工具,开发过程中使用objdictedit配置CANOpen字典能够很大程度上提高开发效率,objdictedit也可以很容易下载并安装。查看CanFestival源码查看objdictedit...

2019-03-14 10:22:13 1477

原创 FreeRTOS协程

FreeRTOS的协程,实际上是线程并发出来的。从协程控制块中没有栈空间就能够知道,每个线程并发出来的协程共用一个栈空间。/* 协程控制块 */typedef struct corCoRoutineControlBlock{ crCOROUTINE_CODE pxCoRoutineFunction; /* 协程函数指针 */ ListItem_t xGenericList...

2019-03-12 17:18:59 3997

原创 FreeRTOS任务通知

任务通知可以替代二进制信号量、计数信号量、事件组,可以替代长度为1的队列(可以保存一个32位整数或指针值),并且任务通知速度更快、使用的RAM更少。先看一下任务TCB/* 任务TCB */typedef struct tskTaskControlBlock{ volatile StackType_t *pxTopOfStack; /* 栈顶地址 */ ...

2019-03-12 11:27:02 253

原创 FreeRTOS事件标志组

在裸机编程过程中,经常会用到标志位。但是在操作系统中,涉及到多个任务同时访问的问题,因此FreeRTOS提供了事件标志组机制。先看一下事件标志组结构体/* 事件标志组结构体 */typedef struct EventGroupDef_t{ EventBits_t uxEventBits; /* 事件标志位 */ List_t xTasksWaitingForBits...

2019-03-11 22:47:42 1378

原创 FreeRTOS软件定时器

软件定时器结构体/* 软件定时器结构体 */typedef struct tmrTimerControl{ const char *pcTimerName; /* 定时器名字 */ ListItem_t xTimerListItem; /* 定时器列表项 */ TickType_t xTimerPeriodInTicks; /* 定时器定时时间 */ UBaseTyp...

2019-03-11 18:06:33 1660

原创 FreeRTOS队列集

任务通信过程中,如果消息类型不同,使用一条队列来实现则有些麻烦。FreeRTOS 提供队列集合,用于对多个队列以及信号量进行“监听”,只要其中不管哪一个有消息到来,都可以让任务退出阻塞状态。这就类似于linux网络编程时的select(IO复用)。先看一下队列结构体多了一个pxQueueSetContainer成员变量,队列所属队列集。在插入队列项的时候,用于查找队列所...

2019-03-10 21:38:38 1815

原创 FreeRTOS互斥锁

信号量API函数实际上都是宏,它使用现有的队列机制。这些宏定义在semphr.h文件中。如果使用信号量或者互斥量,需要包含semphr.h头文件。信号量包括二值信号量、计数信号量、互斥信号量和递归互斥信号量。和普通队列比起来,信号量虽然没有队列项实体,但是信号量值等同于队列项个数。互斥锁和递归互斥锁:互斥锁是用来保证共享数据操作的完整性,同时只能有一个任务访问共享数据。递归互斥...

2019-03-09 23:06:35 12526

原创 FreeRTOS信号量

信号量API函数实际上都是宏,它使用现有的队列机制。这些宏定义在semphr.h文件中。如果使用信号量或者互斥量,需要包含semphr.h头文件。信号量包括二值信号量、计数信号量、互斥信号量和递归互斥信号量。和普通队列比起来,信号量虽然没有队列项实体,但是信号量值等同于队列项个数。创建二值信号量实际上就是创建一个队列项大小为0、队列长度为1的队列,FreeRTOS提供了两个...

2019-03-08 23:36:03 1029

原创 FreeRTOS队列

队列是FreeRTOS主要的任务间通讯方式,包括二进制信号量、计数信号量、互斥量和递归互斥量都是使用队列来实现的。先看一下,队列的数据结构/* 队列结构体 */typedef struct QueueDefinition{ int8_t *pcHead; /* 队列项存储区头部,即第一个队列项 */ int8_t *pcWriteTo; /* 队列项插入指针 */ unio...

2019-03-05 01:51:26 1138

原创 FreeRTOS任务优先级

FreeRTOS任务优先级数值越小优先级越低,系统在运行过程中允许修改任务优先级修改任务优先级的主要工作包括:如果新的优先级大于当前任务优先级,则请求切换重新设置事件列表值将任务从原就绪列表中移除并挂接到新的就绪列表中/* 设置任务优先级 */void vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriorit...

2019-03-01 16:31:50 2670

原创 FreeRTOS任务挂起与解除

任务挂起的主要工作包括:将任务从状态列表中移除并挂接到挂起列表中更新任务唤醒时间如果挂起当前任务,需要请求切换/* 挂起任务 */void vTaskSuspend(TaskHandle_t xTaskToSuspend){ TCB_t *pxTCB; /* 进入临界区 */ taskENTER_CRITICAL(); { /* 通过任务句柄获取任务TCB *...

2019-03-01 15:53:16 1932

原创 FreeRTOS空闲任务

空闲任务在启动调度器的时候被创建/* 启动调度器 */void vTaskStartScheduler( void ){ BaseType_t xReturn; #if (configSUPPORT_STATIC_ALLOCATION == 1) { ...... } #else { /* 创建空闲任务 */ xReturn = xTaskCreate(prvI...

2019-03-01 09:58:15 3973

原创 FreeRTOS任务延时函数

系统提供了两个任务延时函数:相对延时函数vTaskDelay()和绝对延时函数vTaskDelayUntil()相对延时是指:vTaskDelay()开始执行到退出执行的时间固定/* 相对延时函数 */void vTaskDelay(const TickType_t xTicksToDelay){ BaseType_t xAlreadyYielded = pdFALSE; ...

2019-03-01 00:04:33 9211 1

fastboot驱动和工具

windows平台下的fastboot驱动和工具,用于在uboot下烧录各种镜像到存储器中。

2018-12-25

dnw_for_linux

dnw是linux环境下使用usb启动三星arm处理器时的配套工具。

2018-07-17

modbus源码

modbus文档、freemodbus移植模板、linux插件freemodbus、freemodbus源码注释

2018-06-28

CANOpen资料

CANOpen源代码注释、协议资料和ppt、主站移植模板、从站移植模板。

2018-03-25

C语言ntp协议

c语言udp实现

2017-04-19

经纬度计算日出日落时间

C语言,根据经纬度计算日出、日落、天黑、天亮时间

2017-04-17

C语言ntp协议获取网络时间

2017-04-12

经纬度计算日出日落时间(C语言)

2017-04-12

空空如也

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

TA关注的人

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