|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
疑:2131套件PWM音樂輸出實驗程序中(“sizeof”) |
| 作者:willvi 欄目:ARM技術(shù) |
2131套件PWM音樂輸出實驗程序: /****************************************COPYRIGHT (c)************************************************** ** Guangzou ZLG-MCU Development Co.,LTD. ** graduate school ** http://www.zlgmcu.com ** **--------------File Info------------------------------------------------------------------------------- ** File NAME: main.c ** Last MODIFIED Date: 2004-09-16 ** Last Version: 1.0 ** Descriptions: The main() function example template ** **------------------------------------------------------------------------------------------------------ ** Created by: Chenmingji ** Created date: 2004-09-16 ** Version: 1.0 ** Descriptions: The original version ** **------------------------------------------------------------------------------------------------------ ** MODIFIED by: Chenxibing ** MODIFIED date: 2005-01-19 ** Version: ** Descriptions: PWM音樂輸出實驗。 ** ********************************************************************************************************/ #include "config.h" #include "music.h" /* 歌曲曲譜 - 虹彩妹妹*/ const uint32 HCMM[] = { _LA, _SO, _MI, _LA, _SO, _MI, _LA, _LA, _SO, _LA, _LA, _SO, _MI, _LA, _SO, _MI, _RE, _RE, _DO, _RE, _MI, _MI, _SO, _LA, _DO1, _LA, _SO, _MI, _MI, _SO, _DO, _MI, _MI, _MI, _MI, _MI, _1LA,_1LA,_1SO,_1LA, }; /* 歌曲節(jié)拍 */ const uint32 HCMM_L[] = { _4, _8, _8, _4, _8, _8, _8, _4, _8, _2, _4, _8, _8, _4, _8, _8, _8, _4, _8, _2, _4, _8, _8, _8, _8, _8, _8, _8, _4, _8, _2, _4, _4, _4, _8, _8, _8, _4, _8, _2, }; /* ******************************************************************************************************** ** 函數(shù)名稱: Delay ** 功能描述: 軟件延時函數(shù) ******************************************************************************************************* */ void Delay(uint8 dly) { uint32 i; for(; dly > 0; dly--) for(i = 0; i < 0x7FFFF; i++); } /* ********************************************************************************************************* ** 函數(shù)名稱 :main() ** 函數(shù)功能 :PWM音樂輸出實驗。 ** 調(diào)試說明 :需要將music.h包含進(jìn)來。 ********************************************************************************************************* */ int main (void) { uint8 i; PINSEL0 = 0x02 << 14; // P0.7選擇PWM2功能 /* PWM初始化 */ PWMPR = 0x00; // 不分頻,計數(shù)頻率為Fpclk PWMMCR = 0x02; // 設(shè)置PWMMR0匹配時復(fù)位PWMTC PWMPCR = 0x0400; // 允許PWM2輸出,單邊PWM PWMMR0 = Fpclk / 1000; PWMMR2 = PWMMR0 / 2; // 50%占空比 PWMLER = 0x05; // PWM0和PWM2匹配鎖存 PWMTCR = 0x02; // 復(fù)位PWMTC PWMTCR = 0x09; // 啟動PWM輸出 while(1) { for(i = 0; i < (sizeof(HCMM)/sizeof(uint32)); i++) { PWMMR0 = Fpclk / HCMM[i]; // 設(shè)置輸出頻率 PWMLER = 0x05; // 更新匹配值后,必須鎖存 Delay(HCMM_L[i]); // 延時,控制播放速度 } } return 0; } /********************************************************************************************************* ** End Of File ********************************************************************************************************/ 疑: 主函數(shù)中使用了一個while(1)死循環(huán),意圖應(yīng)該是反復(fù)播放音樂。sizeof(HCMM) 得到的并不是HCMM中成員的個數(shù),按照ANSI C正式規(guī)定,當(dāng)操作數(shù)具有數(shù)組類型時,其結(jié)果是數(shù)組的總字節(jié)數(shù)!這樣的實際情況是音樂放了一遍后,蜂鳴器一直叫半天。 如果程序的意圖是音樂放完一遍后就接著放另一遍的話,請修改一下。作為大多數(shù)硬件工程師的參考模板,一定要慎重。 |
| 2樓: | >>參與討論 |
| 作者: 云中月8888 于 2006/2/15 19:46:00 發(fā)布:
暈倒.... |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |