STM32學(xué)習(xí)筆記PWM波形輸出_第1頁
STM32學(xué)習(xí)筆記PWM波形輸出_第2頁
STM32學(xué)習(xí)筆記PWM波形輸出_第3頁
STM32學(xué)習(xí)筆記PWM波形輸出_第4頁
STM32學(xué)習(xí)筆記PWM波形輸出_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、調(diào)試芯片: STM32F103C8T6外部晶振: 8MHz功能介紹:使用 Timer3 實(shí)現(xiàn)兩路(可四路) PWM波形的輸出 代碼如下:初始化:系統(tǒng)時鐘初始化, GPIO端口初始化, Timer 初始化 系統(tǒng)時鐘初始化:1. /* 配置系統(tǒng)時鐘為 72M */2. SystemInit();GPIO端口初始化:1.2.* 函數(shù)名: void GPIO_Config( void )3.* 描述4.* 輸入:配置復(fù)用輸出 PWM時用到的 I/O :無5. * 輸出6. * 調(diào)用:無: main() 調(diào)用7.*/8. void GPIO_Config( void )9. 10. GPIO_InitT

2、ypeDef GPIO_InitStructure;11.12./* GPIOA and GPIOB clock enable */13. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);14.15. /*GPIOA Configuration: TIM3 channel 1 and 2 as alternate functionpush-pull */ 復(fù)用推16. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;17. GPIO_InitStructure.GPIO_Mode

3、 = GPIO_Mode_AF_PP;挽輸出18. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;19. GPIO_Init(GPIOA, &GPIO_InitStructure);20. Timer 初始化 :1.2. * 函數(shù)名: void TIM3_Config(void)3. * 描述 :配置 TIM3 輸出的 PWM信號的模式4.* CH1: 輸出 T=2.5ms(f=1/2.5ms=400Hz) D=0.6的 PWM波( 高電平在前, 低電平在后 )CH2:輸出 T=2.5ms(f=1/2.5ms=400Hz) D=0.4的 PW

4、M波( 高電平在后, 低電5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.平在前 )* 步驟一:通過 T 和 TIMxCLK 的時鐘源確定 TIM_Period 和 TIM_Prescaler* T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=2.5ms*因?yàn)?TIM_Period1,即 TIM_Prescaler=2*所以 TIM_Period=59999=0xEA5F* 步驟二:根據(jù) TIM_Period 的

5、值,高低電平的先后 D,確定 CCR 和 TIM_OCPolarity*CH1:因?yàn)?D=0.6 ,先高后低;*所以CCR1=(TIM_Period+1)* D=36000;TIM_OCPolarity=TIM_OCPolarity_High*CH2:因?yàn)?D=0.4 ,先高后低;*所以CCR1=(TIM_Period+1)* (1-D)=36000;TIM_OCPolarity=TIM_OCPolarity_Low* 步驟三:基礎(chǔ)寄存器初始化步驟四:通道寄存器初始化步驟五:使能 TIM3 重載寄存器 ARR步驟六:使能 TIM3輸入:無輸出:無調(diào)用: main() 調(diào)用*/void TIM3

6、_Config( void )TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure;/* PWM 信號電平跳變值 */u16 CCR1= 36000;u16 CCR2= 36000;/*PCLK1 經(jīng)過 2 倍頻后作為 TIM3 的時鐘源等于 72MHz*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* Time base configuration */TIM_TimeBaseStructure.TIM_Period

7、 =0xEA5F;TIM_TimeBaseStructure.TIM_Prescaler = 2;/ 設(shè)置預(yù)分頻:預(yù)分頻 =2 ,即為 72/3=24MHzTIM_TimeBaseStructure.TIM_ClockDivision = 0;/ 設(shè)置時鐘分頻系數(shù):不分頻TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/ 向上計(jì)數(shù)溢出模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/* PWM1 Mode configuration: Channel1 */TIM_OCIni

8、tStructure.TIM_OCMode = TIM_OCMode_PWM1;/ 配置為 PWM模式 1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = CCR1;/ 設(shè)置跳變值,當(dāng)計(jì)數(shù)器計(jì)數(shù)到這個值時,電平發(fā)生跳變 TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High;/ 當(dāng)定時器計(jì)數(shù)值小于 CCR1 時為高電平 TIM_OC1Init(TIM3, &TIM_OCInitStructure);/ 使

9、能通道 1TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);/* PWM1 Mode configuration: Channel2 */TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR2;/ 設(shè)置通道 2 的電平跳變值,輸出另外一個占空比的 PWM TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;/ 當(dāng)定時器計(jì)數(shù)值小于 CCR2 時為低電平TIM_OC2Init(TIM3, &TIM_OCInitStructure);/ 使能通道 2TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3, ENABLE);/ 使能 TIM3 重載寄存器 ARR/* TIM3 enable counter */TIM_Cmd(TIM3, ENABLE);/ 使能 TIM339.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.1.2.3.4.5.6.7.8.9.10.11.12.13.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論