源:STM8不用手動復位進入自帶Bootloader方法(串口下載)
STM8不用手動復位進入自帶Bootloader方法(串口下載)
除非STM8片子的空的,如果復位運行的是自帶Bootloader,而且要通過串口下載程序的話,必須在1s內點擊上位機,要不然就運行用戶程序了。 這一步很麻煩,所以想把它給省掉。 后來發現上位機Flash Loader Demonstrator在啟動畫面點擊Next后,會先從串口的DTR、RTS輸出一個大概100多毫秒的脈沖,TTL電平就是負脈沖了,之后才會和單片機通信。 所以只要按照下面的圖接線,如果單片機復位運行的是自帶Bootloader,只要在Flash Loader Demonstrator啟動畫面點擊Next,軟件就會復位單片機,不用自己手動復位再點擊Next就可以和單片機通信了。
還有就是下載STM8S或STM8L時候的Flash Loader Demonstrator啟動畫面設置不一樣
STM8S是這樣:
STM8L是這樣:
還有關於復位是否運行自帶Bootloader,至少符合下面兩個條件之一就可以了
1、器件是空的(新買的就是空的)
2、optionbyte里的Bootloader是Enable的
新的器件optionbyte里的Bootloader是disable的,為了能不止一次使用串口下載程序,第一次下載的程序必須修改optionbyte使得Bootloader Enable
這是STM8S的程序:
#include "iostm8.h" void main(void) { FLASH_DUKR = 0xae; asm("nop"); FLASH_DUKR = 0x56; asm("nop"); while(!(FLASH_IAPSR & 0x08)); asm("nop"); FLASH_CR2 = 0x80; asm("nop"); FLASH_NCR2 = 0x7f; asm("nop"); *((unsigned char *)0x487e) = 0x55; asm("nop"); *((unsigned char *)0x487f) = 0xaa; while(1); }
點擊此處下載 STM8S_BL_EN.rar (12.95 KB)
這是STM8L的程序:
#include "iostm8L152c6.h" void main(void) { FLASH_DUKR = 0xae; asm("nop"); FLASH_DUKR = 0x56; // 解除寫保護 asm("nop"); while(!(FLASH_IAPSR & 0x08)); // 等待解鎖 asm("nop"); FLASH_CR2 = 0x80; // 對選項字節進行寫操作 asm("nop"); *((unsigned char *)0x480b) = 0x55; asm("nop"); *((unsigned char *)0x480c) = 0xaa; // 寫入選項字節 while(1); }