大家對(duì)晶振在電路中的作用肯定很了解,晶振作為電路中的心臟,具有極其重要的作用,在各種電子產(chǎn)品設(shè)備中廣泛應(yīng)用,如果出現(xiàn)不振就會(huì)導(dǎo)致整個(gè)設(shè)備不能正常工作。但是,類似STM32這種MCU是有內(nèi)部晶振的,默認(rèn)使用外部晶振時(shí),若外部晶振損壞,會(huì)出現(xiàn)什么情況?芯片自動(dòng)切換到內(nèi)部晶振程序繼續(xù)運(yùn)行還是單片機(jī)死機(jī)?今天就來驗(yàn)證一下晶振損壞情況下的芯片運(yùn)行情況,下面做一下實(shí)驗(yàn)測(cè)試一下。
01找一塊開發(fā)板
如下圖中是STM32的一個(gè)最小系統(tǒng)板,在本公眾號(hào)下回復(fù)【STM32】可以索取關(guān)于STM32的全部視頻和例程資料。
今天就用這個(gè)最小系統(tǒng)板進(jìn)行測(cè)試驗(yàn)證。
02修改晶振
為了方便后面的操作,將開發(fā)板的晶振焊接的引腳裸露在外。在這里要特別說明一下:現(xiàn)在這樣焊接是為了方便后面的驗(yàn)證,在實(shí)際產(chǎn)品中,一定要保證晶振焊接可靠、穩(wěn)定,否則容易影響產(chǎn)品的穩(wěn)定性。
03編寫程序
編寫LED閃爍的程序,用LED是否閃爍以及閃爍的頻率來證明芯片工作的狀態(tài)。時(shí)鐘初始化程序如下:引腳初始化程序如下:void SystemInit (void)
{
/* Reset the RCC clock configuration to the default reset state(for debug purpose) */
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001;
/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
RCC->CFGR &= (uint32_t)0xF8FF0000;
RCC->CFGR &= (uint32_t)0xF0FF0000;
/* Reset HSEON, CSSON and PLLON bits */
RCC->CR &= (uint32_t)0xFEF6FFFF;
/* Reset HSEBYP bit */
RCC->CR &= (uint32_t)0xFFFBFFFF;
/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
RCC->CFGR &= (uint32_t)0xFF80FFFF;
/* Disable all interrupts and clear pending bits */
RCC->CIR = 0x009F0000;
/* Reset PLL2ON and PLL3ON bits */
RCC->CR &= (uint32_t)0xEBFFFFFF;
/* Disable all interrupts and clear pending bits */
RCC->CIR = 0x00FF0000;
/* Reset CFGR2 register */
RCC->CFGR2 = 0x00000000;
/* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
/* Configure the Flash Latency cycles and enable prefetch buffer */
SetSysClock();
}
LED閃爍的程序如下:GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = PB8_LOAD_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
PB8_LOAD_1;
04將晶振引腳剪斷PB8_LOAD_1; //PB8輸出高電平
DelayMs(100); //延時(shí)
PB8_LOAD_0; //PB8輸出低電平
DelayMs(100); //延時(shí)
詳情可參考下面的視頻過程。 我們發(fā)現(xiàn),剪斷晶振的引腳后,LED的閃爍頻率發(fā)生了改變,證明晶振的引腳損壞時(shí),單片機(jī)程序仍然在運(yùn)行。
特殊說明:
1、本實(shí)驗(yàn)僅僅驗(yàn)證了單片機(jī)程序是否運(yùn)行,并不能代表晶振掉了后,我們?cè)O(shè)計(jì)的產(chǎn)品的功能仍然正常;由于系統(tǒng)時(shí)鐘發(fā)生改變,依賴于時(shí)鐘的功能模塊肯定工作不正常,比如串口通信、周期定時(shí)的任務(wù)等;2、現(xiàn)在驗(yàn)證測(cè)試的程序可能與您產(chǎn)品中的程序有所差異。 3、現(xiàn)在只是驗(yàn)證了晶振掉了的情況(晶振掉了后,單片機(jī)程序仍然在運(yùn)行),但是若晶振出現(xiàn)引腳對(duì)地短路、2個(gè)引腳之間短路、晶振對(duì)電源短路等不同情況,結(jié)果可能不同。
-
單片機(jī)
+關(guān)注
關(guān)注
6026文章
44455瀏覽量
630950 -
晶振
+關(guān)注
關(guān)注
33文章
2771瀏覽量
67745 -
STM32
+關(guān)注
關(guān)注
2263文章
10847瀏覽量
353789
原文標(biāo)題:把STM32的晶振剪下來,正在運(yùn)行的程序還能運(yùn)行嗎?單片機(jī)會(huì)死機(jī)嗎?
文章出處:【微信號(hào):精通單片機(jī)與嵌入式,微信公眾號(hào):精通單片機(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論