STC单片机的c代码可以移植到stm32上吗,要不要做什么修改?

STC单片机的c代码可以移植到stm32上吗,要不要做什么修改?,第1张

换芯片,改电路,底层肯定要重写的。

程序有个好习惯还是很重要的。下面说一下移植方面的习惯,

提高移植性,最重要的手段就是隐藏硬件实现的细节,把逻辑与底层分开。

举个例子,LED闪一下亮一下,P1_0=0在51上就是一句话的事。就这一句,就有三个地方涉及硬件,(1)硬件上是P1.0接LED,(2)硬件上低电平亮,相应的是高电平灭,(3)硬件是用的51,用了51独有的位 *** 作。

换个电路,或者换个芯片,这些都要重新改写。假设程序里面有十个地方需要亮灯,移植时就要改十个地方。把亮灯这件事定义成一个函数,或者叫方法,或者叫 *** 作,把具体的 *** 作细节隐藏起来,只表示出做了一件什么事情--亮灯。像这样,voidLED_ON(void)在主程序里面,或者说在应用层的程序中调用LED_ON()就是亮灯,具体怎么亮灯,应用程序不管,也不能管,而是由单独的底层程序来做,也就是LED_ON这个函数的内容,是放在单独的一个文件中。用51,就写一个51下的底层,要移植,要用CM3就写一个CM3的底层,主程序可以不用改动,至少是尽量少改动。

为了提高移植性,尽量用标准的C写代码,涉及不同编译系统的实现细节,也要注意隐藏细节,前面的硬件细节,这个算是软件的细节吧。

比如sfr,sbit,interrupt这些,都是51独有的,换到不同的系统上,都需要重写。处理办法也是一样的,隐藏起来,放到单独的底层文件中。

基本上,做到这两步,程序的移植性会提高很多。

再举个小例子吧:

//app.c

#include"bsp.h"//注意这里不要包含硬件有关的头文件,比如"reg51.h",不要包含在这里。

voidmain(void)

{

while(1)

{

if(hasKey())

{

led_on()

delay(100)

led_off()

}

}

//bsp.h

typedefunsignedshortuint16_t

typedefbitbool

voidled_on(void)

voidled_off(void)

voiddelay(uint16_tms)

boolhasKey(void)

//bsp_for_51.c

#include"bsp.h"

#include"reg51.h"

sbitled=P1^0

#defineON(0)

voidled_on(void)

{

led=ON

}

voidled_off(void)

{

led=!ON

}

voiddelay(uint16_tms)

{

inti

while(ms--)

for(i=0i}

boolhasKey(void)

{

return(P0!=0xFF)//测试是否有按键?

}

这个是51的系统,换成STM32,简单重写一下bsp.c,不需要改app.c,系统就可以移植过来。

刚学51单片机,不知道怎么把程序导入单片机,需要哪些器材,又如何连接?

这个得需要USB转串口芯片,我建议你还是在淘宝上买一个能下载程序的最小系统板,也就几十块钱,或者直接花一百多块钱买一块开发板吧。当然,如果你喜欢动手的话,也可以自己做一个,可是做起来不是那么好用,主要的芯片就是PL2303,还需要一个USB接口。

个人认为还是买个现成的吧,也就50元左右,不容易坏。望采纳!!!!!

大家都是怎么把程序导入单片机中的

Keil 与 protues 不需要有什么连接的在 protues 里面 画好系统图 后 只要 加载 你的 .hex 文件给 单片机 就可以了方法为 点单片机 右键 (编辑属性)加载 找到.hex 文件 确定 就可以了。

怎么从电脑上把程序导入51单片机

把HEX文件烧写到单片机内。

不同的单片机型号有不同的烧写器。

如何将已写好的程序导入89C51单片机中

使用串口线接到电脑的9针串口,然后使用STC软件可以将HEX文件下载到单片机中去。

如果你的程序只是源代码,那么必须用keil编译成HEX文件,才能使用STC软件。

51单片机导入程序,如何接线

用pl2303u *** 转串口,下载安装好pl2303驱动,注意电脑系统的位数,pl2303正负极与单片机对应相连,TXD与RXD相连,RXD与TXD相连,用ISP工具,设置好hex文件,端口号,波特率,先拔掉电源,点下载程序,待电脑提示上电,插上电源,等待下载成功

如何把程序装到单片机里?

以stc的单片机为例:

1、用keil编程软件写好程序,编译输出为hex和二进制文件

2、用串口电平转换板(常用MAX232芯片来做),把电脑后面的口和单片机的(Rxd、Dxd引脚)相连,单片机还要接晶振和电源。

3、在电脑运行stc公司提供的STC-ISP软件,把前面编译好的hex文件装到单片机里。

提到的软件都可从网上下载获得,电平转换部分可以自己做也可以买编程器。

编辑好C语言程序,如何导入单片机

先要编译,没有错误就会生成一个“XXX.hex"的文件,这个文件就可以用烧录软件下载到单片机ROM。

单片机怎么把程序写进去啊

用单片机烧录器,写程序,51的单片机一部分AT89S51/52,STC用串口就可以写程序。

单片机的Keil程序导入ISIS怎么导啊

首先你得在KEIL中选中生成HEX文件。在protues中的双击单片机芯片 有一个选择路径的地方 把你的HEX文件选中导入就行了

MCS51内核的单片机程序,是不能在非MCS51内核的单片机上使用的,同属MCS51内核的单片机,有部分型号的程序是可以通用的。

因为不同内核架构的单片机,其存储区分配、寄存器地址、中断地址、程序入口、堆栈等均不相同,编译器对程序的处理也有差别。

如果想要将将MCS51单片机的程序移植到其他单片机上,通常需要按照如下步骤:

1.

更换相对应的编程软件、编译环境(视实际情况,有很多编程软件支持很多不同的单片机,如51的程序移植到stm32,keil也可实现,不用更换编程软件);

2.

修改底层 *** 作部分的代码,如寄存器配置、中断入口等,同时尽量保证程序各函数名、接口名等与原来的一致;

3.

拷贝逻辑部分代码,根据不同的单片机功能,调整控制逻辑、顺序等,同时确保时钟、堆栈等符合程序要求;

4.

软硬件仿真、上机测试、debug等。。。

因单片机间肯定有很多差异,移植程序时,需要对两张单片机均匀一定程度的了解,避免未知因素影响。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11168785.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存