3039|4

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教嵌入式系统的两个简单问题 [复制链接]

初学者,大家别见笑.
问题1:很多嵌入式系统启动时,其信息可以通过串口在另一台电脑的超级中断
      里现实出来,请问嵌入式系统需要如何设置,它的信息可以输出到串口?
问题2:嵌入式系统的程序,很多是无限循环结构,如
       while(1)
      {}
      这种形式,在Windows下的应用程序是绝对不行的,因为它一直占有CPU,
      整个系统会忙得不行,那么嵌入式系统为何可以?

谢谢!

最新回复

关于问题二,lz还是好好去学习一下操作系统基本理论,就明白一切了  详情 回复 发表于 2008-7-16 17:50
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1. 打印信息到串口实际上是把数据发送到串口,你接上PC的超级终端实际上是通过串口接收嵌入式系统的数据,一个简单的串口通信过程。至于说配置,没有这个说法,可以给你举个例子,比如你把printf函数实现得是向串口发送数据,你程序中所有调用printf的数据就都会发送到串口,也就可以在超级终端中显示了。
2. Windows中用While(1)是不会一直占用CPU,其它应用不是一样的跑么?嵌入式系统,尤其是单任务的系统,往往就只有一个应用,它退出了系统就关闭了,所以一般是不退出的。PC有操作系统,多任务,所以要考虑资源共享问题,你的程序不用了就退出,把资源还给操作系统。一般的嵌入式应用都是单一的,要退出直接关电源就可以了。
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1. 一般在和PC通讯中,会将嵌入式端称为“下位机”,PC端称为“上位机”。
下位机需要设置串口的正常参数,波特率、数据位、校验位、停止位、流控等。然后导出相应的函数SendChar(...);以实现发送一个字节,在其上衍生SendBytes(...)发送多字节,最终可能会形成printf(...)这个大家常用的函数。

不过在8位单片机领域,基本不会用printf(...)这个函数,因为需要占用极大的flash区,也会占用极大的CPU时间。只有在调试过程中可以使用。

2. 在8位领域,只会有一个main(),而这个while(1)会在main()的最后,是为了保证程序不结束。当CPU执行到这里时,就会始终循环,然后等待“中断”的发生。

以中断处理事件,才是单片机的精髓。

如果不加while(1),有些单片机执行完已知代码后,可能会产生无法控制的动向,比如直接跑飞,执行无效代码,或者从头开始执行等现象。
 
 
 

回复

121

帖子

0

TA的资源

一粒金砂(中级)

4
 
在嵌入式的多线程中,while(1)只是为了限定程序的运行,但是本身并不会一直执行下去,当执行完相应的功能后,可以利用线程机制让其进入睡眠或者等待状态以等待下一次唤醒。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
关于问题二,lz还是好好去学习一下操作系统基本理论,就明白一切了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表