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

换芯片,改电路,底层肯定要重写的。
写程序有个好习惯还是很重要的。下面说一下移植方面的习惯,
提高移植性,最重要的手段就是隐藏硬件实现的细节,把逻辑与底层分开。
举个例子,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=0;i<100;i++);
}
boolhasKey(void)
{
return(P0!=0xFF);//测试是否有按键?
}

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

  • STC鍗曠墖鏈虹殑c浠g爜鍙互绉绘鍒stm32涓婂悧,瑕佷笉瑕佸仛浠涔堜慨鏀?
    绛旓細涓庣‖浠剁浉鍏崇殑閮ㄥ垎浠g爜鑲畾闇瑕佷慨鏀癸紝璁$畻閮ㄥ垎褰撶劧涓嶇敤淇敼浜嗐
  • STC鍗曠墖鏈虹殑c浠g爜鍙互绉绘鍒stm32涓婂悧,瑕佷笉瑕佸仛浠涔堜慨鏀?
    绛旓細杩欎釜鏄51鐨勭郴缁燂紝鎹㈡垚STM32锛岀畝鍗曢噸鍐欎竴涓媌sp.c锛屼笉闇瑕佹敼app.c锛岀郴缁熷氨鍙互绉绘杩囨潵銆
  • STC 89C52鍗曠墖鏈,鐢↘EIL鍐欏嚭C绋嬪簭鍚庢庝箞瀵煎叆鍒板崟鐗囨満銆
    绛旓細鐢╧eil缂栬瘧鍣ㄧ紪璇戝嚭hex鏂囦欢 鐒跺悗浣跨敤STC涓嬭浇杞欢閫氳繃涓插彛灏卞彲浠ョ洿鎺ヤ笅杞藉埌鍗曠墖鏈轰腑鐑у綍杩愯
  • 鎶c鏂囦欢绮樿创鍒STC鍗曠墖鏈鐑у綍鍣"绋嬪簭鏂囦欢"绐楀彛鍙互鍚?
    绛旓細涓嶅彲浠锛宑闇瑕侀渶瑕佺紪璇戝悗鎵嶈兘浣跨敤
  • stc89c52鐨浠g爜鑳戒笉鑳鎷挎潵鐩存帴鍦⊿TC12c5a60sc涓婅繍琛
    绛旓細浣犲悗闈㈢殑閭d釜鏄粈涔堝晩锛熶竴鑸潵璇达紝鍗曠墖鏈虹殑绋嬪簭涓嶈兘闅忎究绉绘锛屽洜涓哄崟鐗囨満绋嬪簭鏄牴鎹叿浣撶殑纭欢杩炴帴鐢佃矾缂栧啓鐨勶紝纭欢鐢佃矾涓嶄竴鏍风殑璇濓紝绋嬪簭灏变笉鑳界敤銆
  • 濡備綍灏嗙▼搴浠g爜鐑у綍杩STC鍗曠墖鏈 璇︾粏??
    绛旓細绠绠鍗曞崟鐨勪簲姝ュ氨鍙互浜嗭紙瀹為檯涓婂彧闇 4 姝ワ級銆 鍚姩鏈儳褰曠▼搴忓悗锛 绗竴姝ュ氨鏄夋嫨鐑у綍鍣ㄤ欢銆 鏈儳褰曡蒋浠舵敮鎸STC 鍏ㄧ郴鍒楃殑 51 鍗曠墖鏈鑺墖锛 鍥犳锛 绗竴姝ュ繀椤婚夋嫨鐩稿搴旂殑鍨嬪彿銆 鐢变簬鏈疄楠屾澘閫夌敤鐨勫崟鐗囨満鑺墖灏辨槸鏈儳褰曡蒋 浠堕娆″惎鍔ㄩ粯璁ょ殑鍨嬪彿锛屾墍浠ワ紝鏈」涓鑸兘涓嶉渶瑕侀夋嫨銆傚彟澶栵紝鈥 AP Memory...
  • 鐢╧eil 51澶勭悊濂C绋嬪簭鍚,濡備綍灏嗗叾涓嬭浇鍒鍗曠墖鏈涓
    绛旓細鍥戒骇鐨勫stc 51浣跨敤PC鏈轰覆鍙+鎻愪緵涓婁綅鏈鸿蒋浠跺氨鍙互銆備笂娴风殑浠查鍗曠墖鏈浣跨敤鐨勬槸JET-51浠跨湡涓嬭浇鍣紝鏃鍙互鍦KEIL鐜涓豢鐪燂紝涔熷彲浠ョ儳鍐欑▼搴忥紝C8051F鐨勫崟鐗囨満浣跨敤鐨凱DC/EC4/EC5/EC6;PIC鐨勪娇鐢ㄧ殑ICD2锛孉VR浣跨敤鐨勬槸JTAG 閮ㄥ垎ARM浣跨敤鐨凧TAG浠跨湡鍣ㄤ篃鍙互浣跨敤涓插彛涓嬭浇绋嬪簭銆傘傘傝繕鏈夊ソ澶氬叾浠栫殑 鐪嬩綘閫夌敤鐨勪粈涔...
  • 璇烽棶璇STC鍗曠墖鏈鍜屾爣鍑51鍏煎鏄粈涔堟剰鎬?
    绛旓細涔熷氨鏄浠g爜鍙互鐩存帴绉绘锛岃鐧戒簡灏辨槸杩愯鐨勫揩鎱㈢殑闂锛岃繕鏈STC闆嗘垚浜嗗ソ澶氭爣鍑51娌℃湁鐨勮祫婧愩傞噰鐢ㄨ蒋浠跺欢鏃剁殑浠g爜闇瑕佷慨鏀广
  • STC12C5A60S2鍗曠墖鏈绋嬪簭鎬庝箞绉绘鍒STM32-STM32-F3/F4/F7涓撳尯
    绛旓細涓や釜MCU鐩稿樊寰堝ぇ锛屾眹缂栫▼搴忕殑璇濇棤娉曠Щ妞嶏紝C璇█鐨勮瘽锛屽皢纭欢鐩稿叧鍋氱浉搴旂殑淇敼鍚鍙互绉绘銆
  • STC绯诲垪鍗曠墖鏈绋嬪簭绉绘闂
    绛旓細C璇█鍗曠墖鏈虹▼搴绉绘鐨勬椂鍊欐渶瑕佸叧蹇冪殑鏄鍗曠墖鏈虹殑鏃跺簭 EEPROM 鏈甯歌鐨勬槸IIC 鍜 SPI 锛岃嫢浣犵Щ妞嶅悗鐨勬椂搴忓彂鐢熷彉鍖栵紝缂栬瘧杞欢鏄笉浼氭姤閿欙紝浣嗘槸鍔熻兘涓嶈兘浣跨敤
  • 扩展阅读:7104制冷片参数 ... plc基础知识指令27个 ... 电子元器件识别图大全 ... stc官网最新版下载 ... 编程必背100个代码 ... 12706制冷片为什么便宜 ... 初学编程100个代码大全 ... 宏晶stc单片机官网首页 ... 100种电子元器件符号 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网