嵌入式
文章平均质量分 70
Edward_weiwei
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
uc/OS2学习散乱小心得
对于函数名里带有 '_' 下线符的,要么是static静态函数,要么是uc/os2要求不允许使用者调用的函数,因此对于uc/os2中,使用者能调用的函数均是OSXXXXX(XXX)这种纯字母名字的函数!原创 2016-11-27 23:09:52 · 983 阅读 · 0 评论 -
FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 七
FreeRTOS的堆栈管理系统 heap_2.c的分析FreeRTOS的源代码里有5种堆栈管理系统,分别命名heap1.c,heap2.c到heap5.c 均放在FreeRTOS\Source\portable\MemMang 这个文件夹里面,对于M3内核的单片机而言,其Demo默认采用的是heap2.c这个系统,这里分析一下这个管理系统的源代码。首先,对于ARM内核,其汇编编程有一套APPCS规则原创 2017-03-19 00:35:46 · 1200 阅读 · 0 评论 -
FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 六
list.c 代码分析在list.c里一共有5个函数的定义,分别是vListInitialise,用来初始化列表list;vListInitialiseItem,用来初始化一个列表中的项目Item;uxListRemove,用来移除一个list里的指定Item;vListInsert,用来往list里插入一个Item,按照其xItemValue值来排序进入插入;vListInsertEnd,则原创 2017-03-01 23:52:06 · 1477 阅读 · 0 评论 -
FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 五
list.c与list.h的源代码分析这一篇之所以讲list的内容,是为了后面分析其他代码用的,list是FreeRTOS的一种数据结构原创 2017-02-13 22:48:20 · 1658 阅读 · 0 评论 -
FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 一
博主以前研究过ucos ii的源代码,不过没怎么用过,没什么机会用。最近闲着就利用时间研究一下FreeRTOS的源代码,把学习的过程在博客里记录下来,方便以后查看。原创 2017-02-04 12:38:33 · 6539 阅读 · 0 评论 -
FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 二
STM32F10x.s 启动文件分析FreeRTOS的源代码里,采用了自编写的启动文件,而不是用的官方的启动文件(也就是以前创建工程时必须要添加的一个.s汇编文件,文件名格式大概是startup_stm32f10x_hd.s),但其内容基本只是对这个启动文件进行简单的编辑而已,主要是自定义了中断处理函数(比如TIM2_Handle())的名称而已。关于这个文件的分析可以先学习Cortex-M3权威手原创 2017-02-04 16:17:18 · 3596 阅读 · 0 评论 -
FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 三
任务启动与任务切换CM3内核任务切换原理FreeRTOS进行任务切换的过程任务启动与任务切换CM3内核任务切换原理无论是FreeRTOS还是ucos,其任务切换的实现都是用汇编来写的,在STM32上都是用的PendSV这个系统异常来进行任务切换的,参考权威手册121页有关SVC与PendSV的介绍。通过置位NVIC的ICSR中断控制及状态寄存器(131页)地址0xE000_ED04来悬起SVC及原创 2017-02-05 22:08:59 · 11643 阅读 · 0 评论 -
FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 四
开始任务的实现分析:xPortStartScheduler()函数FreeRTOS里开始任务是在main里调用vTaskStartScheduler函数来开始任务的,在调用这个函数后,系统会先自动的创建一个优先级最低(也就是0优先级)的空闲任务IdleTask,这个任务的作用是在所有用户的任务都被挂起,也就是当前没有用户所建立的任务在运行时,系统就会运行这个IdleTask。(但如果有用户任务的优先原创 2017-02-11 19:53:50 · 3165 阅读 · 0 评论 -
今天移植ILI9341液晶屏时出现的小问题导致的时间浪费
对于液晶屏的初始化,在IO口和FSMC等初始化后,记住要对液晶屏进行复位 LCD_RESET=0; delay_ms(50); // delay 50 ms LCD_WriteReg(0x0000,0x0001); LCD_RESET=1; delay_ms(50); // delay 50 ms lcddev.id = LCD_ReadReg(0x0000)原创 2016-12-04 00:10:46 · 6287 阅读 · 0 评论 -
在Ubuntu 18.04上用最新的ARM交叉编译工具(7.3版本)编译 linux 2.6.22.6(jz2440开发板)
最近开始学习嵌入式linux,开发板买的时JZ2440,按教程,使用给的3.4.5版本的arm-linux-gcc编译linux 2.6.22.6是没有问题的。在尝试用最新的cross_compile出现了许多问题,最新的交叉编译是直接在ubuntu 上安装的,使用sudo apt install gcc-arm-linux-gnueabi安装完了之后先给CROSS_COMPILE赋值...原创 2018-05-31 23:41:47 · 2844 阅读 · 0 评论
分享