熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2023-4-13 22:23
正文摘要:大家好,學(xué)習(xí)EEPROM知識(shí),想利用EEPROM上電進(jìn)行遞增0-4數(shù)字,但發(fā)現(xiàn)無法進(jìn)行0-4之間的循環(huán),不知道循環(huán)部分怎么寫了?程序如圖, |
zch5200 發(fā)表于 2023-4-14 08:58 你好!安恢滥闶裁磿r(shí)候?qū)戇M(jìn)e2的,數(shù)可能會(huì)跳過不是遞增的”這句話怎么理解?沒貼上的就是EEPROM的擦除,寫入,讀取的基本程序。這程序完全沒有循環(huán), |
Hephaestus 發(fā)表于 2023-4-13 23:35 ,你好,看了,是10MS一個(gè)周期 |
if(dat>=3) dat = 0; 因?yàn)槟愕某绦蚴?、1、2循環(huán),所以當(dāng)然到不了3、4。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
先把定時(shí)器中斷標(biāo)志去了,看看會(huì)不會(huì)循環(huán),,按你的邏輯是0,1,2,來循環(huán)的,到不了3,和4。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
你是想上電一次e2里面的值加1吧,你把while(1)后面的程序全放在前面去,while(1);。讓程序停在這里。 你在死循環(huán)里一直加dat,程序沒貼全不知道你什么時(shí)候?qū)戇M(jìn)e2的,數(shù)可能會(huì)跳過不是遞增的。還有if(dat>=3) {dat=0;}dat的值是0-3循環(huán)。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
dat的值,后來被從E2讀出來的值覆蓋,而E2的初始值,有可能是負(fù)數(shù),自加1后一時(shí)半回還到不了0-4的范圍。 試下把dat的定議為無符號(hào)數(shù),再把此值寫入E2,再讀出來,接著再到你后定的程序。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
將dat約束在0-4范圍 dat++; if(dat>=5) {dat=0;} |
你試試把 char dat = 0; 改成 int dat =0; |
TIM_10MS_Flag是在中斷里面改變的吧?用個(gè)不用的GPIO把這個(gè)標(biāo)志位輸出出來,用示波器看。 |
Powered by 單片機(jī)教程網(wǎng)