自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (4)
  • 收藏
  • 关注

原创 博客网站转移

我的博客会慢慢的转移到新的网站上,新的地址为oopsrtos.com,新博客会对arm 体系结果做更深入的探讨,主要是关于实时操作系统内核开发的研究。最近在研究FPU,从内核层解释在操作系统中怎么对浮点寄存器入栈和出栈,也会在oopsrtos.com这个博客发布相关内容。csdn博客将会被废弃,废弃指的是不会在这里发布新内容。...

2019-01-10 21:31:54 1038 4

原创 嵌入式软件没有层次感的原因

因为软件是一个人写的!!! 

2018-12-26 16:06:04 939

原创 GNU makefile入门——刚开坑,没有干货

一个完整的makefile文件包含5个部分的内容:显示规则,隐含规则,变量和指示符,注释。显示规则:包括目标:依赖规则   命令隐含规则:make根据目标文件的命令自动推倒的一个规则。变量:自定义的一串字符代表一段文本,可以定义一个变量用于代表一类文件列表指示符或称关键字:在执行make时候需要执行的动作,比附特定的路径、文件读取等注释:“#”之后都是注释,转行使用“\”,“\...

2018-12-19 16:36:34 888

原创 oskernel定义

NanoKernel : 实现了基本的硬件管理、硬件抽象层Microkernel : 多进程、进程间通信Monolithickernel : 文件系统、网络协议栈Hybridkernel :  在用户端实现系统级功能 参考文档:《深入linux内核架构与底层原理》  写于深圳一个冬日的早上  日期:2018.12.19...

2018-12-19 16:34:49 1121

原创 c语言好难 - 队列的实现

Talk is cheap, show you the fucking source code.#define NULL 0#define FALUSE -1struct queue_def{ unsigned char *head; unsigned char *tail; unsigned char *buffer; unsigned char block_siz...

2018-12-19 16:26:19 341

原创 guile 操作笔记

一、位操作按位于按位或按位取反logxor 按位或,总形参数的1为奇数置位1,偶数置位0,移位操作,第二个操作数是正数就向左移,负数就向右移,0不动scheme@(guile-user)> ,use (srfi srfi-27)scheme@(guile-user)> (random-integer n) ;n为整数scheme@(gu...

2018-11-19 13:42:06 871

原创 ARM的异常返回

异常返回有3类,我这只解释两类,第三类我没有理解,后续会看看linux kernel怎么做的。1)从swi和未定义指令返回 ARM SWI pc-8 ;异常发生处指令1 pc-4 ; 程序返回的地方, LR=下一条指令指令2 pc ;pc当前值异常是由指令本身引起的,PC、LR的值没有更新,CPSR模式就已经更改了,而当前执行的产...

2018-10-21 16:27:27 1452

原创 C语言好难 - float如何转换为int(本文代码有误,后续改,莫被误导)

前几天在微信群看到有人在问如何将float转换成int类型,我很想当然的说了一个解决办法,直接指针指向float类型变量地址,然后将该float变量的内存地址的内容拷贝到int变量地址上。很自然的被人怼了,然后就不服啊,直接提各种内存理论,想回怼过去,然后我自己仿真跑了一下,额,我是错的,真实的类型转换方法我会在下面说明。int ftoi(float *para){ unsigned i...

2018-07-30 00:00:32 3354

原创 M-RTOS V1.0 Release

    M-RTOS,基于cotrx-m3芯片写的,当前1.0版本实现的功能如下。    1、多任务调度,可抢占的内核,不支持时间片轮转调度。额,不对,把每个任务的优先级定为一致也可以实现轮转调度。    2、可配置时间片,默认10ms。    3、任务栈与内核栈分离。    4、空闲任务,但是没有实现钩子函数。    5、系统延时,系统延时的延时单位会比设定的大0到1个时间片。    6、互斥信...

2018-07-15 10:57:22 411

原创 C语言好难——volatile的一种解释

a=d; b=d; c=d;如果d不加volatile,翻译为"读d,写a、b、c"。加volatile,翻译为"读d,写a;读d,写b;读d,写c."写于 2018年4月15日夜深圳

2018-04-15 21:16:34 388

原创 单片机的动态内存管理——自己实现heap管理

两年前一位同事和我说过,单片机不能实现动态内存管理,两天后我在keil上利用malloc()在coterx m3芯片上实现了一个链表,然后把代码给他看了,对固执的人摆事实好过讲道理。之后我觉得使用malloc()并不能满足我的需求,然后想自己实现一个heap管理。这就是这篇文章的由来,这是我今天下午突然想到的一种简单的方法,其实这很没有意义,因为我能想到的东西,别人都已经做出来了。嗯,姑且当是一个...

2018-03-20 19:45:30 5514 8

原创 STM32 串口驱动,分层通信

以前在使用串口的时候都是直接使用中断,每收发一个字节都要进一次中断,然后直接在中断进行封包,现在做了一个简单的分层设计,其实这个设计还是驱动设计,后期将逻辑层划分再细致一点,争取做到和linux的shell类似的分层。软件分层如下驱动层:串口、DMA、初始化,串口只开启接收空闲中断,DMA中断不开启。缓冲区:利用malloc和free函数创建的链表,缓冲区管理有两个,一个是接收缓冲区,每次进入接收...

2018-03-02 10:21:04 2985

转载 MDK 5.0支持4.0的方法 MDK V4 legacy support

MDK Version 5 uses Software Packs to support a microcontroller device and to use middleware. To maintain backward compatibility with MDK Version 4 you may install Legacy Support. This might be necessa

2017-11-15 09:50:12 10537

原创 keil的错误: Error: Encountered an improper argument 的解决方法

将附件中的文件下载然后放到keil一下的安装目录中即可C:\Keil_v5\UV4.,选择替换即可。文件链接:http://download.csdn.net/download/ma57457/10118005官方说的是支持5.14版本的,其他版本没有提,我测试在5.24a上面还是不能完美的解决,偶尔还是会出现这个问题,重启一下软件就好了。读者测试其他版本希望能在评论区提一下官

2017-11-14 14:58:54 23496 7

原创 STM32 M0时钟配置

本文主要讲STM32 M0的时钟配置,也适用于M3内核。先来看看M0内核的时钟树(stm32f072)图中可以看出,M0芯片的时钟源有4个,一个高速内部RC时钟源,频率为8M;一个高速外部时钟源,频率为8到32MHz;一个低速外部时钟源,频率一般为32.768kHz;一个低速内部时钟源,频率为40kHz;一、HSI芯片上电的时候默认启用内部RC震荡,即8MHz的内部时钟源,

2017-10-08 15:29:50 2816 2

原创 设计心理学读后的随想

这两天翻阅了一下《设计心理学》这本书,触动颇大,遂写了这篇文章。设计心理学的作者是唐纳德 诺曼,书中只要是通过对一些评论一些日用品的设计来阐述作者对于设计的一些看法。我只看了日用品的设计那一部分,剩下的后续如果我觉得有共鸣也会接着写下去,如果没有就不写了。唐纳德用了一个电话和汽车的控制的例子来阐述了一个观点,当控制器的数量少于功能的数量时,产品便变得难以使用,比如电话(这里的电话指的是

2017-08-27 14:33:47 956

原创 Keil 按下Build编译全部文件的原因

将下图中的复选框去除这是一个优化选项,如果选择了最高级的优化的话,这个优化功能没有多大作用,如果在调试过程中,一般不优化,所以除非是在发布的时候,否则这个选项在平时是浪费调试时间的。

2017-08-23 14:51:27 1342

原创 source insigned 4.0关闭大括号自动缩进

Options->File Type Options->auto indent->Indent Open Brance 去除复选勾,如下图

2017-08-17 10:55:43 1999 3

原创 Renesas CS+ for ca cx入门(三)

续上一篇文章,这章节主要讲Compile Option这个标签栏,单击CA78K0R(Build Tool)->Compile Option,如下图Debug Information 添加调试信息,有三个等级可以选,0不添加,1在布标文件中添加,2在汇编和目标文件中添加,建议选2,这个选项仅在调试中有意义,发布的时候无意义Optimization优化等级:默认标准,有速度优

2017-08-16 23:58:41 8949 10

原创 STM32一直死在r1,[r0,#0x808]

今天在调试STM32的时候,程序一直死在一下代码中LDR r1,[r0,#0x808]LSLS r1,r1,#21BMI 0x1FFFF3B2原因,BOOT0引脚被拉高了。解决办法,将BOOT0引脚接地。没找到本质原因,一直在启动汇编、芯片IC选择、启动代码编译地址、中断向量表重定向那里找,统统不是,就是一个简单的开关引脚。问题都是自己搞复杂的……写于2017年8月14

2017-08-14 17:01:44 6615 6

原创 Psoc Creator入门——EZI2C 通信

用了两天的时间搞懂了赛普拉斯的Psoc 4000芯片作为iic从设备的通信,现在简单介绍一下怎么使用。先说下我手上的开发套件,这是一块CY8CKIT-042的开发板和一个MiniProg3仿真器。开发板自带一个仿真电路,MiniProg3的主要作用不是用于仿真,而是用于打开Bridge Control Panel时候作为RS232转iic的转换器。本文主要是介绍IDE里面的DE

2017-08-07 22:17:04 4233 2

原创 Renesas CS+ for ca cx入门(二)

续上一篇入门文章,这一片主要讲讲编译器的配置新建好了工程之后,还可以切换芯片的,右击下图的选项,选择修改微控制器,然后选择需要修改的芯片瑞萨的RL78系列芯片有一部分是在专门针对中国市场供应的,然后在原版的ca这个ide是找不到这些芯片的,官网会有支持包提供,然后会告诉用户相对的国际版的芯片的开发版是哪款芯片一致的,开发的时候可以使用这款开发板。在这里说一些不负责任的话,注

2017-08-05 00:01:28 7223 1

原创 单片机——按键扫描

按键扫描,我想应该是比较简单的单片机应用了,但是有时候看起来简单的东西反而不好写。本文拿大部分人觉得简单的按键扫描聊聊我工作至今对于软件结构的理解。嗯,对的,是结构,不是架构,暂时不敢提架构这个词。按键扫描,我当时入门的时候是看的郭天祥的51单片机入门的,视频里面讲的是循环扫描io引脚,一旦有电平变化就利用软件延时消抖,模拟延时就是让单片机空转,什么也不做,等待个几十毫秒之后再检测一次如果...

2017-07-30 11:16:51 26599 8

原创 Renesas CS+ for ca cx入门(一)

这是一篇关于Renesas的CS+ for ca(以下简称CA)的入门简介,在网上关于这个编译的使用方法比较少人讲述,兴许使用的人比较少吧。另一个类似的IDE是CS+ for cc,这两个IDE的区别在于CA终将淘汰,现在CA的版本为4.0,而CC的版本为5.0。从供应商的技术支持得到的反馈是CA是早期的NEC开发的,而NEC的IP做得是不错的,而瑞萨的外设做得不错,然后和两家之所长,但是CA

2017-07-04 17:35:35 28378 12

原创 linux下的CSV文件操作

先介绍一下什么是csv文件,这是一种简单的文本文件,也被称为逗号分隔值文件。主要是用于存储简单的数据,下面在weindows下用UE简单生成一下文件。然后用excel打开这就是一个简单的csv文件,每个字符都是一个ASCII码,图中的第一行,1,2,3,4,5,7。1~7每一个都是一个ASCII码,一个逗号也是ASCII码。第二行的12,13,434,45,56

2017-05-27 21:14:42 56547

原创 GNU makefile入门

最近在学makefile,顺便写点学习体会,兴许后来的某一天我忘了,回来翻翻博客还能找点思路。本文仅基于GCC讲解,至于其他编译器暂时不会涉及,如果没听过啥事GCC就不要往下看了。简单介绍一下makefile是个什么东东,makefile是一个编译和链接规则的集合,主要的作用是告诉make,怎么去调用gcc或g++编译源文件,然后怎么去链接目标文件。开始的时候先简单介绍一下程序

2017-05-25 00:02:46 3181

原创 我用四天的时间写了四行代码

前两周的时候我一直被一个问题所困扰,是一个关于IIC通信的问题。我本来在进行的项目需要用到cypress的一款主控芯片。该芯片是cypress的psoc4000系列的一款芯片,这款芯片主打的功能是触摸按键,初次接触这种可编程的触摸芯片觉得挺神奇的,ide使用的是cyrepss自家的psoc4,关于这个编译环境请看我的另一篇博文。我刚开始的时候主要写触摸芯片的代码,先把触摸按键写完,然后测试

2017-05-11 23:30:15 4240 7

原创 IIC的通信波形分析

关于IIC,不解释它的历史了,有兴趣自己去百度看看,本文的图片是由周立功的LAB6021逻辑分析仪抓取的,通信的波形是抓取的cypress的psoc 4000芯片得到的。最近项目需要用到触摸IC,使用了一片触摸cypress的触摸IC,这个触摸IC的内核停强大的,主要是可编程,自己配置引脚功能,并通过模拟的分析套件直接在PC端直接显示波形图,通过直观的观察自定义触摸模块的灵敏度,芯片在项目中作

2017-04-01 16:14:34 16329 4

原创 ubuntu16.04安装32位交叉编译工具链的兼容包

apt-get install lib32ncurses5 ​apt-get install lib32z1​

2017-03-31 12:05:16 4962

原创 学生时代的一些电子作品视频

http://i.youku.com/i/UNDE5MDc1NjA4/videos?spm=a2hzp.8244740.0.0

2017-03-31 00:55:40 506

原创 C语言好难——强制地址跳转

#define jump(TargetAddr )   (*((void(*)())(TargetAddr)))()第一个(( void( * )(  )) ,意思为强制类型转换为一个无形参,无返回值的函数指针,(*(TargetAddr))为跳转地址,但是函数指针变量不能为常数所以要加((void( * )(  )) 进行强制类型转换。最后一个()为执行的意思。整一条指定的目的是为了跳转

2017-03-22 08:28:13 2470

原创 C语言好难——“_at()” 特殊地址定位指令

在keil里面,有一个特殊地址定位的指令,就是将一个变量或常量定位到一个指定的地址上面指令为 __at ,使用方法如下int variable __at(0x8000) = 100;意为将variable变量定位到0x8000这个地址。指令的目的是告诉链接器将指定变量定位到某个地址里面,在使用该功能的时候需要注意一点的是,地址的范围需要符合单片机的datasheet给出的地址映射表,注意,如果地址...

2017-03-19 23:27:48 6480 2

原创 C语言好难——几个宏定义__DATE__,__TIME__,__FILE__,__LINE__

ANSI C里面有几个宏定义,可以在编译文件的时候简化程序__LINE__:当前源代码的行号__FILE__:当前源文件的文件名__DATE__:当前编译日期__TIME__:当前编译时间__STDC__:是否符合ANSI标准备注:宏定义的左右都有两个下划线做个试验,用GCC工具将上面的宏打印出来结果如图。写于2017年3月19日

2017-03-19 21:20:41 5193

原创 OpenJTAG 在win10下的驱动安装

简单的介绍一下怎么在win10下安装openjtag的驱动。1、首先下载好驱动,这是 地址;2、禁用驱动的签名验证,具体的禁用方法本文不介绍,请百度;3、插入openjtag后,鼠标指到开始菜单,点击右键,选择计算机管理,选择设备管理;3、右键点击上图中的红色圈圈部分,选择其中一个,然后在打开的dialog中,选择更新驱动程序,选择

2017-03-07 22:47:45 2668 2

原创 win10下使用oflash时提示ftd2xx.dll缺失

问题描述:按照方法将ftd2xx.dll和oflash放置在了system32文件夹下了,可是在dos下提示ftd2xx.dll缺失。原因:32位系统目录一般为:C:\WINNT\System32      64位系统为C:\Windows\SysWOW64或者将文件添加到环境变量试试,这个方法我也没有试过,改天尝试一下。写于2017-3-5 深圳夜

2017-03-05 22:54:28 4807

原创 Psoc Creator 入门——接近感应组件的使用

关于传感器的设计这里不做介绍,本文仅涉IDE的方面,哪天脑壳坏了再写一篇关于pcb设计的注意事项。1、打开TopDesign.cysch文件,选择CapSense CSD[v2.40]2、双击组件,打开widget config,选择Proximity sensors,再点击add button增加组件,双击组件可以更改控件名字。3、打开*.cy

2017-03-03 11:39:26 3261

原创 Psoc Creator 入门 —— GPIO输出

Cypress的psoc 4000芯片的入门篇,关于GPIO的使用,如图选择Digital Output Pin[v2.20]然后双击组件,弹出如下框图选择单向通道,使能输出,Drive mode的下拉框可选管脚的模式,可以选择开漏、上拉……等工作方式单击右键,选择打开datasheet,可以查看关于tab的解释,关于api:Pin_Read(void)读取相应的引

2017-03-03 11:24:33 3332

原创 Psoc Creator 入门——空工程的建立

最近在做psoc 4000芯片的开发,现在简单的说说怎么利用psoc  creator进行开发。首先,安装psoc creator ,我使用的版本是4.0.安装过程省略,赛普拉斯官网有下载链接,本文不提供下载链接。提醒一下,安装psoc creator需要安装 .net 3.5。然后打开psoc creator ,在菜单栏选择file->new->project,然后弹出工程选择的di

2017-03-03 11:18:54 4956 1

原创 ubuntu下安装gcc-arm-embedded-toolchain

ubuntu安装在虚拟机上,本文讲解怎么安装交叉编译工具,所有方法都是网上找的,然后经过自己验证可行,下面把方法总结一下,供后人参考。拾人牙慧,莫笑。环境:宿主机为win10内部预览版 64位机    客户机为ubuntu 16.04版 64位            虚拟机为vmware12工具链:gcc-arm-none-eabi-5_4-2016q3-2016092

2017-02-26 20:50:10 5912 3

原创 MATLAB下的多项式拟合

本文只进行线性多项式的拟合,至于非线性的拟合不会涉及,参考文献为《MATLAB从入门到放弃》。多项式格式如下:a为各项系数,x为自变量,n为阶。先说说两个会用到的函数:polyfit(x,y,n)           拟合参数的“普通求取法”调用格式poly(a,xp,S)          在xp指定点上计算拟合函数值yp及半带宽dypsum(x)        

2017-02-13 21:43:07 11997

AN-TW8835 HADC & Measurement v0.1.pdf

tw8835的说明文档,官方给的,大家可以看看,感觉还是有用的

2019-10-31

graphics.lcd.technologies.zip

nxp的文档,关于lcd的图形技术说明,官网下载的,大家可以了解一下

2019-10-31

MDK V4 legacy support

官方的源文件,我只是搬运工 文件只是一个连接地址,不必下载,http://az717401.vo.msecnd.net/legacy/MDKCM524.EXE

2017-11-15

Error: Encountered an improper argument 官方解决办法

Download the attached file and extract it to the folder C:\Keil_v5\UV4. If you have installed PK51 to a different folder, you need to adapt the path accordingly. The file UV4.exe is replaced with version 5.14.2.1. 亲测可以在win10和5.24中使用

2017-11-14

空空如也

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

TA关注的人

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