初學stm32-PWM的應用-呼吸燈_第1頁
初學stm32-PWM的應用-呼吸燈_第2頁
初學stm32-PWM的應用-呼吸燈_第3頁
初學stm32-PWM的應用-呼吸燈_第4頁
全文預覽已結束

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第第頁初學stm32-PWM的應用-呼吸燈PWM概述脈沖寬度調制(PWM),是英文“PulseWidthModulation”的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術。簡單一點,就是對脈沖寬度的控制,PWM原理如圖:STM32F4的定時器除了TIM6和7。其他的定時器都可以用來產生PWM輸出。通過查看開發板的原理圖(如下),可發現PF9引腳連接LED0,同時也是作為TIM14_CH1的復用輸出端口,知道此前提,我們就可以開始搞事情了。PWM輸出步驟使能定時器14和相關IO口時鐘。使能定時器14時鐘:RCC_APB1PeriphClockCmd();使能GPIOF時鐘:RCC_AHB1PeriphClockCmd();初始化IO口為復用功能輸出。函數:GPIO_Init();GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復用功能GPIOF9復用映射到定時器14GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);初始化定時器:ARR,PSC等:TIM_TimeBaseInit();初始化輸出比較參數:TIM_OC1Init();使能預裝載寄存器:TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);使能自動重裝載的預裝載寄存器允許位TIM_ARRPreloadConfig(TIM14,ENABLE);使能定時器。不斷改變比較值CCRx,達到不同的占空比效果:TIM_SetCompare1();呼吸燈實現pwm.c

#include"pwm.h"

/*引腳說明:LED0燈連接PF9,TIM14通道1TIM14--APB1,定時器頻率:84MHZ*/

voidPwm_Led0_Init(void){GPIO_InitTypeDefGPIO_InitStruct;TIM_TimeBaseInitTypeDefTIM_TimeBaseStruct;TIM_OCInitTypeDefTIM_OCInitStruct;//定時一個該結構體//開啟TIM14和和GPIO時鐘,配置PF9選擇復用功能AF9(TIM14)輸出。//庫函數使能TIM14時鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);//還需要使用到GPIOF9,所以也要使能該引腳RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//由于使用到PF9的復用功能,利用庫函數使其引腳與TIM14定時器GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;//GPIOF9GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;//配置引腳為復用功能GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;//速度50MHzGPIO_InitStruct.GPIO_OType=GPIO_OType_PP;//推挽復用輸出GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;//上拉GPIO_Init(GPIOF,//初始化PF9,用庫函數寄存器

TIM_TimeBaseStruct.TIM_Prescaler=84-1;//設置定時器的分頻值1MHZTIM_TimeBaseStruct.TIM_Period=500-1;//設置定時器的的自動重裝載的值周期為500usTIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;//設置定時器為向上計數模式TIM_TimeBaseStruct.TIM_ClockDivision=TIM_CKD_DIV1;//設置定時器的時鐘分頻因子TIM_TimeBaseInit(TIM14,//初始化定時器14TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//選擇PWM的模式,選擇PWM模式1TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_Low;//輸出的極性,輸出是高電平還是低電平,這里選擇低電平TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//用于設置輸出的使能,使能PWM輸出到端口//根據設定信息配置TIM14OC1--通道1TIM_OC1Init(TIM14,//使能預裝載寄存器:TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);//使能自動重裝載的預裝載寄存器允許位TIM_ARRPreloadConfig(TIM14,ENABLE);

//使能定時器。TIM_Cmd(TIM14,ENABLE);

}

main.c

#include"stm32f4xx.h"#include"led.h"#include"delay.h"#include"pwm.h"

intmain(void){//NVIC分組(一個工程當中只能配置一次分組)搶占優先級2位,值范圍:0~3;響應優先級2位,值范圍:0~3;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//LED燈初始化Led_Init();Delay_Init();Pwm_Led0_Init();//對比的燈GPIO_ResetBits(GPIOE,GPIO_Pin_14);inti;

溫馨提示

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

評論

0/150

提交評論