熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-11-8 11:21
正文摘要:芯片型號(hào)STC15W4K48S4 時(shí)鐘采用內(nèi)部時(shí)鐘24M 模式16位自動(dòng)重載 用定時(shí)器定時(shí)1us,變量做累加,發(fā)現(xiàn)定時(shí)時(shí)間一直存在誤差,后修改代碼做驗(yàn)證 注釋掉部分代碼之后,周期終于對(duì)了,所以 ... |
24MHZ在1T模式下,誤差最多就是1/24 做1uS肯定是沒有問題的 問題是,你要這1uS又是可調(diào)的干嘛? 如果是計(jì)時(shí),可以用定時(shí)器 如果輸出PWM......很少有用到1MHZ的PWM的 也許,你想要的功能,可以通過(guò)其它方式來(lái)實(shí)現(xiàn),還不如說(shuō)說(shuō)你要做什么好點(diǎn) |
1、已經(jīng)設(shè)置為自動(dòng)從裝了,為何還要重置時(shí)常路,不合理。 2、每個(gè)us反轉(zhuǎn)輸出就完成2us的周期脈沖輸出了,為何還要用NUM數(shù)數(shù),也不合理。 兩個(gè)不合理,導(dǎo)致程序執(zhí)行時(shí)間過(guò)長(zhǎng),超出中斷時(shí)間! 根本問題:中斷時(shí)間不能太短,當(dāng)中斷服務(wù)程序運(yùn)行時(shí)間>中斷時(shí)間時(shí),時(shí)序就控制不了了。 |
自動(dòng)重裝初值模式,中斷內(nèi)不要賦值 TH0、TL0寄存器。 |
所有的鍋都甩給八位機(jī),就是不提系統(tǒng)架構(gòu)設(shè)計(jì),應(yīng)用合理性。 你STM32做1us的中斷也不見得中斷程序里面你能多跑幾條代碼 |
發(fā)送連續(xù)波形完全可以用定時(shí)器自身的功能。只有單次輸出才需要中斷。 |
時(shí)間太短了,進(jìn)中斷處理、退出中斷,總時(shí)間已經(jīng)超過(guò)1us,所以會(huì)不準(zhǔn)。 |
STC的下載軟件內(nèi)都有范例程序的,你可以用范例試試呢 |
下載軟件.png (75.33 KB, 下載次數(shù): 58)
自動(dòng)重裝不需要再給TH0、TL0賦值,2us周期脈沖也不適合用定時(shí)器中斷。改用高速脈沖輸出功能為宜。 |
stm32的應(yīng)該沒問題 |
為什么非要用中斷呢? 用 INT_CLKO |= 0x01; 直接輸出不好么? |
stm32肯定可以達(dá)到 |
賦值、指令執(zhí)行和判斷都是要花時(shí)間的;不同的指令執(zhí)行的時(shí)間也不一樣;而且1us那么短;對(duì)于這種芯片來(lái)說(shuō)還要調(diào)時(shí)間;肯定是吃不消的,要么用硬件pwm |
1us除了中斷,能做的事不多了啊 |
自動(dòng)重裝初值模式,中斷內(nèi)不要賦值 TH0、TL0寄存器。 |
Powered by 單片機(jī)教程網(wǎng)