国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STC8H系列單片機(jī)IAP實(shí)現(xiàn)不停電下載(通過(guò)串口)

這篇具有很好參考價(jià)值的文章主要介紹了STC8H系列單片機(jī)IAP實(shí)現(xiàn)不停電下載(通過(guò)串口)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.前言

在使用串口往STC單片機(jī)燒錄程序時(shí),需要冷啟動(dòng),先點(diǎn)擊下載再上電。這樣做有一定的缺點(diǎn)。首先,一些特殊的外圍電路要求一直保持有電狀態(tài),有些客戶需求我們能遠(yuǎn)程操控設(shè)備就可以升級(jí)程序,而不需要去現(xiàn)場(chǎng)斷電設(shè)備。其次,頻繁的斷電上電操作也比較麻煩。

2. 實(shí)現(xiàn)原理

STC 單片機(jī)在硬件設(shè)計(jì)時(shí),增加了一個(gè)軟復(fù)位寄存器 (IAP CONTR),讓用戶可以通過(guò)設(shè)置此寄存器來(lái)決定 CPU 復(fù)位后重新執(zhí)行用戶代碼還是復(fù)位到ISP 區(qū)執(zhí)行ISP 系統(tǒng)代碼。當(dāng)向IAP CONTR 寄存器號(hào)入 0x20 時(shí),CPU 復(fù)位后重新執(zhí)行用戶代碼: 當(dāng)向IAP CONTR 寄存器寫入0x60 時(shí),CPU 復(fù)位后復(fù)位到 ISP 區(qū)執(zhí)行 ISP 系統(tǒng)代碼。
要實(shí)現(xiàn)不停電進(jìn)行 ISP 下載,我們可以在接收中斷中加入等待一個(gè)特殊的串口命令,例如默認(rèn)的“@STCISP#”。當(dāng)我們發(fā)送命令,單片機(jī)接收檢測(cè)到滿足下載條件時(shí),就通過(guò)軟件觸發(fā)軟復(fù)位寄存器復(fù)位到 ISP區(qū)執(zhí)行ISP 系統(tǒng)代碼,從而實(shí)現(xiàn)不停電JSP 下載。
stc不停電下載,單片機(jī),嵌入式硬件

我使用的是STC8H8K64U單片機(jī),可以在STC官網(wǎng)查詢自己的型號(hào)是否具有IAP功能。

stc不停電下載,單片機(jī),嵌入式硬件

3. STC-ISP設(shè)置

有幾點(diǎn)注意:(1)串口模式的波特率應(yīng)該與程序中的保持一致
(2)“下次使用STC-HID接口進(jìn)行ISP下載”不需要勾選
(3)“目標(biāo)文件變化時(shí)自動(dòng)裝載并發(fā)送下載命令”可選可不選,如果選了的話你每編譯一次它會(huì)自動(dòng)發(fā)送命令幫你下載
stc不停電下載,單片機(jī),嵌入式硬件

4. 中斷接收程序

最開(kāi)始我參考了另外一位博主寫的中斷接收程序,可以成功運(yùn)行,鏈接附上!
STC8H8K64U單片機(jī)-免冷啟動(dòng)下載程序
但是后來(lái)在運(yùn)用到別的程序上時(shí)出現(xiàn)了一些小問(wèn)題。就是這一塊代碼部分:
stc不停電下載,單片機(jī),嵌入式硬件
這段代碼的含義是:檢查接收計(jì)數(shù)器 COM1.RX_Cnt 的值是否大于等于8,即檢查是否接收到了指定長(zhǎng)度的數(shù)據(jù)。如果是,將接收計(jì)數(shù)器 COM1.RX_Cnt 的值重置為0,準(zhǔn)備接收下一幀數(shù)據(jù)。這就導(dǎo)致了如果接收到的數(shù)據(jù)字節(jié)大于8,就會(huì)被重置,數(shù)據(jù)會(huì)丟失。
我當(dāng)時(shí)想了一個(gè)修改方法是修改自定義命令的長(zhǎng)度,例如設(shè)為“@STCISPHH”就可以修改接收10個(gè)字節(jié)的長(zhǎng)度了,但是這個(gè)方法并不好用。因此我根據(jù)官方手冊(cè)中的代碼進(jìn)行修改,在接收中斷中加入一串命令函數(shù),即使換到別的實(shí)驗(yàn)程序中也只需要拷貝過(guò)去即可,非常方便。
以官方例程《06-串口1中斷模式與電腦收發(fā)測(cè)試》為例。

主函數(shù)

void main(void)
{
	u8	i;
  char index;
	
	EAXSFR();		/* 擴(kuò)展寄存器訪問(wèn)使能 */
	GPIO_config();
	UART_config();
	EA = 1;
  index=0;
	
	PrintString1("STC8H8K64U UART1-UART3 Test Programme!\r\n");  //UART1發(fā)送一個(gè)字符串

	while (1)
    {
            delay_ms(1);
            if(COM3.RX_TimeOut > 0)		//超時(shí)計(jì)數(shù)
		        {
			        if(--COM3.RX_TimeOut == 0)
			        {
			         	if(COM3.RX_Cnt > 0)
				       {
				          for(i=0; i<COM3.RX_Cnt; i++)	TX1_write2buff(RX3_Buffer[i]);	//把收到的數(shù)據(jù)通過(guò)串口1轉(zhuǎn)發(fā)
							 }
				              COM3.RX_Cnt = 0;
			         }
		      }
    } 
}

UART1中斷函數(shù)

#ifdef UART1

char code*STCISPCMD="@STCISP#";
char index;


void UART1_ISR_Handler (void) interrupt UART1_VECTOR
{
	char dat;

	if(RI)
	{
		RI = 0;
		dat =SBUF;
		
		if(dat==STCISPCMD[index])
		{
			index++;
			if(STCISPCMD[index]=='\0')
				IAP_CONTR=0x60;
		}
		else
		{
		   index=0;
			 if(dat==STCISPCMD[index])
				index++;
		}
		if(COM1.RX_Cnt >= COM_RX1_Lenth)	COM1.RX_Cnt = 0;
    RX1_Buffer[COM1.RX_Cnt++] = SBUF;
    COM1.RX_TimeOut = TimeOutSet1;
	}

	if(TI)
	{
		TI = 0;
		
        #if(UART_QUEUE_MODE == 1)   //判斷是否使用隊(duì)列模式
		if(COM1.TX_send != COM1.TX_write)
		{
		 	SBUF = TX1_Buffer[COM1.TX_send];
			if(++COM1.TX_send >= COM_TX1_Lenth)		COM1.TX_send = 0;
		}
		else	COM1.B_TX_busy = 0;
        #else
        COM1.B_TX_busy = 0;     //使用阻塞方式發(fā)送直接清除繁忙標(biāo)志
        #endif
	}
}
#endif

這樣就可以實(shí)現(xiàn)不斷電IAP下載啦,可以使程序更新更加便捷,無(wú)需斷電冷啟動(dòng)就能實(shí)現(xiàn)程序的更新。
stc不停電下載,單片機(jī),嵌入式硬件

5.方法總結(jié)

對(duì)于STC8H8K64U單片機(jī),可以使用以下方法來(lái)實(shí)現(xiàn)在不需要斷電冷啟動(dòng)的情況下更新程序:

(1)使用IAP功能:STC8H8K64U單片機(jī)內(nèi)置了IAP(In-Application Programming)功能,可以通過(guò)IAP指令和相關(guān)函數(shù)來(lái)進(jìn)行程序更新??梢允褂肐AP提供的函數(shù),通過(guò)串口或其他通信方式將新的程序代碼加載到單片機(jī)的存儲(chǔ)器中,實(shí)現(xiàn)程序的更新。

(2)使用ISP接口:STC8H8K64U單片機(jī)提供了ISP(In-System Programming)接口,可以通過(guò)該接口連接到外部編程器或開(kāi)發(fā)板上,實(shí)現(xiàn)對(duì)單片機(jī)的編程。通過(guò)連接編程器或開(kāi)發(fā)板,可以直接更新單片機(jī)的程序,無(wú)需斷電冷啟動(dòng)。

(3)使用Bootloader:可以在STC8H8K64U單片機(jī)的Flash中預(yù)留一部分空間作為Bootloader。Bootloader是一個(gè)特殊的程序,它用來(lái)接收和處理新程序的更新請(qǐng)求,并將新程序加載到單片機(jī)的存儲(chǔ)器中。通過(guò)Bootloader,可以在不需要斷電冷啟動(dòng)的情況下更新程序。

(4)使用USB-CDC虛擬串口。通過(guò)這個(gè)串口實(shí)現(xiàn)通信,代碼里面定義了不停電自動(dòng)ISP下載的命令,在STC-ISP里面就可以不斷電自動(dòng)ISP下載。
stc不停電下載,單片機(jī),嵌入式硬件文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-770583.html

到了這里,關(guān)于STC8H系列單片機(jī)IAP實(shí)現(xiàn)不停電下載(通過(guò)串口)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STC8H8K64U單片機(jī)-ADC采集數(shù)

    STC8H8K64U單片機(jī)-ADC采集數(shù)

    配置單片機(jī)的ADC時(shí)一定要將IO口配置成高阻輸入模式, 以下是單片機(jī)引腳對(duì)應(yīng)的ADC通道 ?

    2024年02月07日
    瀏覽(26)
  • 一鍵使用PWM并輸出,STC8H系列庫(kù)函數(shù),PWM外設(shè)教程

    一鍵使用PWM并輸出,STC8H系列庫(kù)函數(shù),PWM外設(shè)教程

    隨著STC單片機(jī)的發(fā)展,外設(shè)功能也不斷增加,開(kāi)發(fā)時(shí)間也慢慢的延長(zhǎng)了很多博主為了縮短開(kāi)發(fā)時(shí)間自己開(kāi)發(fā)了一種庫(kù)文件??梢砸绘I使用外設(shè),顧名思義就是我們不用再去配置寄存器不用再去看開(kāi)發(fā)手冊(cè)只需要對(duì)外設(shè)有一定了解便可以非常靈活的使用這個(gè)庫(kù)函數(shù),并且我在每

    2024年02月15日
    瀏覽(81)
  • STC8H驅(qū)動(dòng)hub75e接口的64*64LED點(diǎn)陣屏

    STC8H驅(qū)動(dòng)hub75e接口的64*64LED點(diǎn)陣屏

    由于最近在做畢業(yè)設(shè)計(jì),應(yīng)導(dǎo)師要求學(xué)習(xí)LED點(diǎn)陣屏的顯示原理,學(xué)習(xí)并驅(qū)動(dòng)hub75e接口的64*64LED點(diǎn)陣屏。點(diǎn)陣屏上一個(gè)點(diǎn)有三個(gè)顏色分量R,G,B,1為亮,0為滅。當(dāng)這個(gè)點(diǎn)為110時(shí),顏色為紅色和綠色的混合--黃色。 ?????????hub75e接口如上圖所示,其中R1/G1/B1和R2/G2/B2為兩個(gè)R

    2024年02月11日
    瀏覽(68)
  • 51單片機(jī)(STC8) -- 開(kāi)發(fā)環(huán)境搭建(Keil C51)

    51單片機(jī)(STC8) -- 開(kāi)發(fā)環(huán)境搭建(Keil C51)

    STC8H3K系列芯片概述 文章中所用的芯片選型為STC8H3K64S4,后續(xù)STC8案例均以該芯片展開(kāi) 內(nèi)核 ? 超高速 8051 內(nèi)核(1T),比傳統(tǒng) 8051 約快 12 倍以上,指令代碼完全兼容傳統(tǒng)8051 ? 21個(gè)中斷源,4 級(jí)中斷優(yōu)先級(jí) ? 支持在線仿真 工作電壓 ? 1.9V~5.5V 工作溫度 ? -40℃~85℃ Flash 存儲(chǔ)

    2024年01月25日
    瀏覽(34)
  • STC8G1K08單片機(jī)接收485發(fā)送的不等長(zhǎng)混合數(shù)據(jù)

    STC8G1K08單片機(jī)接收485發(fā)送的不等長(zhǎng)混合數(shù)據(jù)

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 這里以芯力特的485芯片為例如圖1: 引腳功能: 1.接收器輸出端(接單片機(jī)的RXD引腳) 2.接收器輸出使能控制(接收器輸出使能控制。當(dāng)/RE 接低電平

    2024年02月16日
    瀏覽(24)
  • 單片機(jī)讀/寫端口或引腳區(qū)別及具體1個(gè)用例(一種基于STC8G1K08A最小8腳嵌入式單片機(jī)LED安全夜燈方案)

    51單片機(jī)讀引腳和讀端口測(cè)試總結(jié)_單片機(jī)怎么讀取引腳電平_愛(ài)嘟嘟的小屁孩的博客-CSDN博客 近期看了幾篇有關(guān)單片機(jī)讀/寫端口或引腳的區(qū)別的文章,其中上面引用本CSDN的這篇文章,總結(jié)的2點(diǎn)感覺(jué)還不錯(cuò),先引用一下: 1. 51單片機(jī)里對(duì)某一個(gè)I/O口進(jìn)行讀--改--寫(例如上面的

    2024年02月08日
    瀏覽(27)
  • 基于STC15系列單片機(jī)的智能門鎖

    基于STC15系列單片機(jī)的智能門鎖

    一、項(xiàng)目背景及功能需求 1.1項(xiàng)目背景 智能門鎖是一種智能化、高效、安全的門鎖,它可以實(shí)現(xiàn)密碼識(shí)別開(kāi)鎖方式,極大地提高了門鎖的安全性和便利性。隨著人們對(duì)安全性的要求越來(lái)越高,智能門鎖已經(jīng)成為了現(xiàn)代家庭和企業(yè)的必備設(shè)備。因此,本項(xiàng)目旨在設(shè)計(jì)一款基于S

    2024年02月04日
    瀏覽(25)
  • STC15系列單片機(jī)學(xué)習(xí)4:串口通訊

    STC15系列單片機(jī)學(xué)習(xí)4:串口通訊

    在使用單片機(jī)的串口前,得先知道所使用的單片機(jī)有幾個(gè)串口,再結(jié)合你的硬件電路圖來(lái)使用哪個(gè)串口。 以下是STC15各系列單片機(jī)的串口數(shù)量,STC15W4K32S4系列有4個(gè)串口 工作模式0:同步移位寄存器(官方建議初學(xué)者不學(xué)) 工作模式1:8位串口,波特率可變 工作模式2:9位串口

    2024年04月13日
    瀏覽(28)
  • STC15系列單片機(jī)學(xué)習(xí)6:外部中斷

    STC15系列單片機(jī)學(xué)習(xí)6:外部中斷

    外部中斷,就是通過(guò)單片機(jī)IO引腳電平的變化觸發(fā)的中斷。 STC15系列單片機(jī)的外部中斷源一共有5個(gè),分別是外部中斷0(INT0)、外部中斷1(INT1)、外部中斷2(INT2)、外部中斷3(INT3)、外部中斷4(INT4);當(dāng)然不是所有的STC15系列單片機(jī)都有著5個(gè)外部中斷。 中斷源 觸發(fā)行為

    2024年03月12日
    瀏覽(78)
  • stc89C51系列單片機(jī)介紹

    STC89C51 是一款基于 8051 內(nèi)核的高性價(jià)比單片機(jī),由國(guó)內(nèi)的 STC 微電子公司生產(chǎn)。STC89C51 系列單片機(jī)的特點(diǎn)是具有高速運(yùn)行、豐富的外設(shè)接口、廣泛的應(yīng)用領(lǐng)域等優(yōu)點(diǎn)。本文將從以下幾個(gè)方面介紹 STC89C51 系列單片機(jī)。 STC89C51 系列單片機(jī)基于 80C51 內(nèi)核,具有 1T 和 2T 兩種不同的時(shí)

    2024年02月01日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包