摘要: 可重入函数 可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。 可重入函数也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使... 阅读全文
posted @ 2013-04-25 22:23 此岸幸福 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 错误1Error[Pe127]: expected a statement E:\MSP430\Module\TFT\SD.c 95Error[Pe018]: expected a ")" E:\MSP430\Module\TFT\SD.c 132解决:仔细检查下程序,看有没有一些语法上的错误,多加的" ; "就会使程序出现上述错误;或者一些常用语句表达错误。Example1:宏定义的时候多加了“;”#define SPI_DO_H P1OUT |= BIT0; //P1.0#define SPI_DO_L P1OUT &= ~BIT0;Exam 阅读全文
posted @ 2013-04-25 09:24 此岸幸福 阅读(2022) 评论(0) 推荐(0) 编辑
摘要: 数字信号处理与模拟信号处理相比有什么有点?数字技术相对于模拟技术最大的有点是可以利用软件实现信号的大规模复杂处理,并由此带来系统功能强、精度高、灵活性强、可靠稳定、体积功耗小等一系列有点。DSP与普通单片机相比有什么特点?数字信号处理器(DSP)的特点:哈佛结构。程序空间和数据空间彼此独立。多总线结构。这样可以保证在一个机器周期内可以多次访问程序空间和数据空间,大大提高了DSP的运行速度。支持流水线操作。DSP执行一条指令,需要通过取指、译码、取操作和执行等几个阶段。采用流水线结构,在程序运行过程中使取指、译码和执行等操作可以重叠进行。硬件乘法器。DSP芯片配有硬件乘法器,并与专用累加器一起构 阅读全文
posted @ 2013-04-21 17:50 此岸幸福 阅读(1119) 评论(0) 推荐(0) 编辑
摘要: 未完待续... 阅读全文
posted @ 2013-04-11 23:19 此岸幸福 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 时间日历在DS1302寄存器中是以BCD码的形式存放的 BCD码(Binary-Coded Decimal?)亦称二进码十进数或二-十进制代码,用4位二进制数来表示1位十进制数中的0~9这10个数码。例如:写操作--时间数据12:30:00写0x00到地址0x80中--00秒;写0x30到地址0x82中--30分钟;写0x12到地址0x84中--12小时;例如:读操作--时间12:30:00 数据从地址0x81读得0x00--00秒;从地址0x83读得0x30--30分钟;从地址0x85读得0x12--12小时;注意:时间日历在DS1302寄存器中虽然是以BCD码的形式存放的,但是我们往DS. 阅读全文
posted @ 2013-04-09 16:19 此岸幸福 阅读(772) 评论(1) 推荐(0) 编辑
摘要: 最近在用430开发一款产品,在软件调试的时候发现Watch窗口中无法观察局部变量的值,总是显示<unavailable>,下面通过一个简答的例子说明一下现象:#include "msp430g2553.h"/* Global variable */unsigned char ReceiveGlobal;unsigned char addxy(unsigned char x,unsigned char y){ unsigned char z; z = x+y; return z;}void main(){ /* Local variable */ unsigned 阅读全文
posted @ 2013-03-27 11:02 此岸幸福 阅读(8863) 评论(0) 推荐(0) 编辑
摘要: /* 数码管编码表 */const uint16_t LedTable2[]={0,1,2,3,4,5,6,7,8,9}; // const关键字将变量定义在ROM中/* 动态显示注意点: * 1、占空比与LED的显示亮度有关 —— delay(100) * 2、扫描周期要大于20ms,即扫描频率大于50Hz */void LedDisplay(uint16_t Led1,uint16_t Led2,uint16_t Led3,uint16_t Led4m,uint16_t Led5){// /* 消影 */// SendData_74HC595(0xFFFF); /* 送... 阅读全文
posted @ 2013-03-14 10:15 此岸幸福 阅读(1166) 评论(0) 推荐(0) 编辑
摘要: C中变量定义的三个修饰符变量定义有三个修饰符值得注意,虽然它们与标准C是相同的,但是在嵌入式C语言中又有不同的含义。1) static 在子函数中用static声明的静态变量依然是局部变量,但是退出这个子函数后其值不消失。换一种理解是,只在第一次调用Function1函数的时候,才执行静态变量初始化操作"x = 0;",在第二次,第三次...调用到Function1的时候,就不再对静态变量x进行初始化操作了。下面的两个函数调用Function1和Function2很好的说明了static关键字的作用。另外两个函数中的局部变量名都定义成了x,但是它们并不会相互影响,因为局部变 阅读全文
posted @ 2013-03-14 09:42 此岸幸福 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 就绪表和就绪组的作用:满足内核在每个时钟中断查找最高优先级的任务,与正在运行的任务优先级进行比较以确定是否进行任务切换。就绪组和就绪表的采用确保了任务调度的时间是一个确定值(一个常量)。就绪组和就续表定义的相关代码:typedef unsigned char INT8U;#define OS_RDY_TBL_SIZE ((OS_LOWEST_PRIO)/8 + 1)INT8U OSRdyGrp; /* 定义就绪组 */INT8U OSRdyTbl[OS_RDY_TBL_SIZE]; /* 定义就绪表 */OS_LOWEST_PRIO顾名思义Operation System Lowe... 阅读全文
posted @ 2013-03-13 21:27 此岸幸福 阅读(1784) 评论(0) 推荐(0) 编辑
摘要: 有时候用户参数在掉电后需要保存,对于内部不带有EEPROM的MCU,我考虑到是否可以使用它的flash来代替,如果flash控制器不支持数据改写,那么最后再考虑使用外部EEPROM芯片,毕竟方法越简单越好、成本越低越好。在全系列msp430单片机上,可以通过内置的flash控制器,擦除或改写内部任何一段flash内容。此外msp430的flash内部还专门开辟了一段information memory用于存储需要掉电后永久存储的数据。本次项目使用的芯片是msp430g2553,硬件电路已基本完成,软件工作也已经完成了大部分,由于之前并没有接触过如何利用flash存储器存储数据,这段世间用了.. 阅读全文
posted @ 2013-03-13 17:12 此岸幸福 阅读(922) 评论(0) 推荐(0) 编辑