㈠ μC/OS在51单片机移植
我刚移植成功,你要的话我给你资料。发我邮箱询问。
[email protected]
㈡ 如何把程序移植到单片机里,萌新要自己动手做的话有哪些方法,具体点呢谢谢
如果是STC单片机的话因为有ISP功能,下载STC_ISP软件从串口下载到单片机。如果是普通的单片机,需要用编程器烧录到单片机。
㈢ 在51单片机完成μC/OS-II的移植
网上自己找找资料,自己搞吧,你知道系统移植的工作量有多大吗?
㈣ 程序能不能在各种单片机之间互相移植,比如三个32位单片机
单片机是指将cpu、存储器、外围接口集中在一片芯片上,所以ARM也是单片机的一我觉得应该不是了,算是处理器了 很明确地告诉你,是的。而ARM的功能
㈤ 单片机程序移植
“如果我把芯片接到开发板上,利用开发板上的硬件调试完程序后,取下芯片直接连接电路就能正常工作了吗?需不需要连接其他的电路(比如晶振电路)?”
当然不可能。至少还需要电源电路、复位电路和时钟振荡电路(可选),并且这几个部分稍有差池也是会导致芯片不能正常工作的。
“我开发板上的单片机接口是32针脚的,如果我的单片机不是32针脚的能接上去下载、调试程序吗?”
请查阅你的开发板手册。有些开发板是可以支持的,例如虽然留双列32脚插座,但是同厂家同系列的24脚单片机也可以插上进行调试开发。
㈥ 51单片机程序移植问题
1.12和89还是有很多差别的,尤其是LCD1602中的相关延迟函数,12跑的快,89跑的慢,移植的时候要考虑,机器周期的不同,要不就会显示错误。你改一下相关延时就可以用了
㈦ 有关单片机移植操作系统。
操作系统,是个庞然大物,但是大家都很喜欢,因为他能帮你做很多你不愿意面对的事。他能提供很好的底部的支持。就说楼上举的QQ的例子吧,QQ就是一款软件,你往对话框里写字,然后通过网络传到另一台用户端。如果你有操作系统,你跟操作系统说,我要个窗户,他就给你窗户,我要联网,改一改IP你就能上网了。中间的网络协议也不要你管了,什么TCP IP也不用你看的吐血了。
要是没有操作系统,你要生成一个对话框?只有你自己一条一条代码的写了,对话框写进去的字,你自己想办法变成文件,自己想办法打包,使之符合网络协议,自己做网孔,自己通信吧。
那感觉就是你要生火,一个人说(操作系统),我有打火机,你自己用。另一个说(没有操作系统),我这有铁矿,还有天然气矿,都给你了,你想做什么打火机都可以。
说到这里,两者的差别就很好说了。
1.操作系统是很方便,提供打火机耶!前提是你要开个小卖部,你才有打火机提供你丫。小卖部很占地方的!这里就会无情的占用你单片机少的可怜的地方,一般单片机可以存储的程序不会超过1M(外接存储设备的除外),而一个未裁剪的linux系统,200M,即使裁剪了,大小可能远远大于你能承受的范围,再者为了买一个打火机,你建一小卖部,不是吃多了么!
2.单片机提供的东西很少,只有原始材料,如果你要生火,做个打火机,的确困难了点。转木取火这时候就比较现实了。至少比建个小卖部好吧!
说这么多,看问题。
1.装上了操作系统(比如linux、uc/os-2、winCE等),与不装操作系统最大的区别是什么?
装了,你就是建了小卖部,占的地方大,如果你需要的功能很小,完全是白费力,还不如转木取火。
没装,你就是转木取火,占地少,找个角落一蹲,默默操作去吧。
2.也就是说,装上了系统,能实现什么更多的功能?
这是当然的,小卖部,绝对不止卖打火机,什么时候你要酱油了,跟老板说声,老板马上进货,
你要是单片机,孩子,火生好了,自己找个配方,自己配酱油去。
3.如果说完成了一个项目,如果这个项目以后的功能需要扩展,装上了系统的单片机对于不装系统的单片机来说有什么优势?
小卖部有了,最开始卖打火机,后来又卖酱油,以后你万一再要什么(功能扩展),跟老板说一句就好了。
要是单片机,酱油配好了,我还想要白糖呢。你给我种甘蔗去。
总结:如果是一个巨大的项目,操作系统是必备的,他能提供很多支持,做很多基层的工作,方便以后的升级。但是他的维护和他所消耗的资源(空间),也成为了它在单片机领域推广的致命伤。所以相反的如果你只要某个功能(生火),不装操作系统明显方便,而且易于维护(木头棒子坏了,再找一根呗!),如果你要这要那,我的天,我宁愿造个小卖部。
㈧ 把51单片机的程序移植到STM32中。感觉好难移啊,哪位能帮帮我木。。
如果是用C语言写的话,任何单片机之间都很好移植,不同的只是不同芯片的寄存器和自带的硬件而已,一般只需改初始化的部分,工作部分几乎不用变。
㈨ STC单片机的c代码可以移植到stm32上吗,要不要做什么修改
换芯片,改电路,底层肯定要重写的。
写程序有个好习惯还是很重要的。下面说一下移植方面的习惯,
提高移植性,最重要的手段就是隐藏硬件实现的细节,把逻辑与底层分开。
举个例子,LED闪一下亮一下,P1_0 = 0; 在51上就是一句话的事。就这一句,就有三个地方涉及硬件,(1)硬件上是P1.0接LED,(2)硬件上低电平亮,相应的是高电平灭,(3)硬件是用的51,用了51独有的位操作。
换个电路,或者换个芯片,这些都要重新改写。假设程序里面有十个地方需要亮灯,移植时就要改十个地方。把亮灯这件事定义成一个函数,或者叫方法,或者叫操作,把具体的操作细节隐藏起来,只表示出做了一件什么事情--亮灯。像这样,void LED_ON( void );在主程序里面,或者说在应用层的程序中调用LED_ON();就是亮灯,具体怎么亮灯,应用程序不管,也不能管,而是由单独的底层程序来做,也就是LED_ON这个函数的内容,是放在单独的一个文件中。用51,就写一个51下的底层,要移植,要用CM3就写一个CM3的底层,主程序可以不用改动,至少是尽量少改动。
为了提高移植性,尽量用标准的C写代码,涉及不同编译系统的实现细节,也要注意隐藏细节,前面的硬件细节,这个算是软件的细节吧。
比如sfr, sbit,interrupt这些,都是51独有的,换到不同的系统上,都需要重写。处理办法也是一样的,隐藏起来,放到单独的底层文件中。
基本上,做到这两步,程序的移植性会提高很多。
再举个小例子吧:
// app.c
#include "bsp.h" // 注意这里不要包含硬件有关的头文件,比如"reg51.h",不要包含在这里。
void main( void )
{
while(1)
{
if ( hasKey())
{
led_on();
delay(100);
led_off();
}
}
// bsp.h
typedef unsigned short uint16_t;
typedef bit bool;
void led_on( void );
void led_off( void );
void delay( uint16_t ms );
bool hasKey( void );
// bsp_for_51.c
#include "bsp.h"
#include "reg51.h"
sbit led = P1^0;
#define ON (0)
void led_on( void )
{
led = ON;
}
void led_off( void )
{
led = !ON;
}
void delay( uint16_t ms )
{
int i;
while( ms-- )
for( i=0; i<100; i++);
}
bool hasKey( void )
{
return ( P0 != 0xFF); // 测试是否有按键?
}
这个是51的系统,换成STM32,简单重写一下bsp.c,不需要改app.c,系统就可以移植过来。
㈩ 51单片机能移植操作系统么
严格的说,51不能移植操作系统。但实际上51可以一直一个叫“多任务系统”的类似于操作系统的系统(这个我亲自试过),其它的能移植的就不知道了。ucosII是不能移植到51上的。在多任务系统中:用户程序是和系统一起加载到ROM的。51单片机P0口可做硬件地址总线连接片外ROM,这个了解汇编的应该清楚。还有就是有一种烧写叫ISP,这种方法可以先吧程序存到SD卡中,再写个引导程序,让单片机自己给自己下程序,这个方法实际应用与ARM9,51理论上也可以。51升级版(如STC12C5A)有较大的ROM,可省去片外ROM。但即使这样,也难以保证操作系统的需要。关于第三个问题:我只能说应用目的和功能差不多,实际有非常大差别,无论是通信协议还是使用方法还是速度都有差别。
最后要说的是,要用操作系统首先要了解操作系统,知道为什么用操作系统,用操作系统为了“赶时髦”只能是自己给自己添堵。。。根据我的经验,程序源代码少于30K,RAM 少于5K的一般没必要用操作系统,用中断、DMA、单片机自带的各种硬件功能完全可以实现。以51的硬件能力上操作系统本人目前没发现有什么实用价值。