Archive

Archive for June, 2009

解决"应用程序配置不正确,程序无法启动"问题

June 28th, 2009 will No comments

其实这是一个常见的问题,很多软件卸载重装都可能会出现这样的问题——“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”。

将AVR Studio从4.12版升级到4.14版的过程中,出现提示框,说是xxx文件没有注册成功之类,当时点确定continue过去了,安装完成后,运行AVR Studio就出现了上面的错误提示。

百度一下发现原来是缺少运行时态库,解决办法:
1.下载Microsoft Visual C++ 2005 Redistributable Package (x86): http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=zh-cn
2.下载Microsoft Visual C++ 2005 Redistributable Package (x64): http://www.microsoft.com/downloads/details.aspx?familyid=90548130-4468-4BBC-9673-D6ACABD5D13B&displaylang=zh-cn
以上x86与x64是针对不同系统的,32位系统选择x86,64位选择x64。一般选择x86即可。目前vcredist_x86.exe已有VC 2005和VC 2008两个版本,如果一个不行可以试一下另一个。

记得曾经写过一个关于VC++2005编写的应用程序如何打包的问题,有兴趣的朋友可以看看。

在安装vcredist_x86.exe的时候可能会出现“不能访问WINDOWS INSTALLER服务”的错误提示。解决办法:
1、下载安装Microsoft Windows Installer 3.1 简体中文版http://www.skycn.com/soft/11601.html
2、点击开始–运行– 输入cmd 依次输入;先用msiexec /unregserver命令, 停掉windows installer服务;再用msiexec.exe /regserver 命令启用windows installer服务。

3077c806

Categories: 学习笔记 Tags:

UART收发数据的讨论

June 22nd, 2009 will No comments

UART(Universal Asynchronous Receiver )是通用异步收发接口,在很多芯片中都有应用。一般UART的收与发共用一个数据寄存器(8bit),通过相应的状态寄存器来判断UART的工作情况。

接收可以有两种方式:一种是查询,另一种是中断。通常使用中断方式。

接收查询方式是通过CPU不停读取UART的状态寄存器,当有数据到来时,读取数据,此方法占用太多的CPU时间,很少使用,在CPU只做数据转发时可以考虑使用。

接收中断方式是通过数据到达后产生中断,在中断处理函数中读取数据。每一个数据(8bit)到来产生一次中断。如果在每个数据中断都调用数据处理函数,当波特率较高,数据帧较长,数据处理时间较长时,可能会出现丢数据的情况。如果在一次中断进入后,while(数据寄存器满){读取数据},但波特率不高时,可能出现将一帧数据分多次中断读取,给后来的数据处理带来不便。

Windows中是将串口(UART)当做一个文件,直接对文件进行读写操作。一般是以一个线程去查询读取数据,基本可以保证整帧数据一次全部读出。也可以一次一个字符(8bit)来读。实际上是Windows的底层驱动将UART(串口)数据接收之后放到一个FIFO缓冲区中。显然在单片机或DSP等专用芯片中也应该用一个FIFO来缓存数据,然后在程序中读FIFO来处理数据。

发送也可以分为两种方式:一种是查询,另一种是中断。通常使用查询方式。

发送查询方式是通过CPU查询UART发送寄存器的状态,当为空的时候,发送数据;当不为空时,等待(适合用while循环判断)。

发送中断方式是将需要发送的数据存入一个缓冲区(FIFO),当发送寄存器为空,进入中断时,将数据发送。需要注意时,一旦开启发送中断,当没有数据发送时,就会一直跳入发送中断处理函数,所以在数据发送完之后一定要关闭发送中断使能。

Categories: 学习笔记 Tags: , ,