嵌入式系統(tǒng)原理及應(yīng)用項(xiàng)目化教程 課件 項(xiàng)目五 呼吸燈控制設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用項(xiàng)目化教程 課件 項(xiàng)目五 呼吸燈控制設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用項(xiàng)目化教程 課件 項(xiàng)目五 呼吸燈控制設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用項(xiàng)目化教程 課件 項(xiàng)目五 呼吸燈控制設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
嵌入式系統(tǒng)原理及應(yīng)用項(xiàng)目化教程 課件 項(xiàng)目五 呼吸燈控制設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

嵌入式系統(tǒng)原理及應(yīng)用

項(xiàng)目化教程項(xiàng)目5呼吸燈控制設(shè)計(jì)與實(shí)現(xiàn)學(xué)習(xí)目標(biāo)1.掌握STM32通用定時(shí)器的原理及軟件配置;2.掌握STM32通用定時(shí)器中斷及軟件配置;3.掌握STM32PWM的原理;4.利用定時(shí)器實(shí)現(xiàn)PWM呼吸燈。目錄5.1定時(shí)器介紹5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制5.1定時(shí)器介紹通用定時(shí)器的內(nèi)部結(jié)構(gòu)框圖5.1定時(shí)器介紹5.1定時(shí)器介紹5.1定時(shí)器介紹5.1定時(shí)器介紹5.1定時(shí)器介紹5.1定時(shí)器介紹5.1定時(shí)器介紹定時(shí)器中斷實(shí)驗(yàn)APB1時(shí)鐘X1/X2F(CK_PSC)

÷NCK_CNT內(nèi)部時(shí)鐘選擇5.1定時(shí)器介紹定時(shí)器中斷實(shí)驗(yàn)時(shí)鐘計(jì)算方法:5.1定時(shí)器介紹定時(shí)器中斷實(shí)驗(yàn)通用定時(shí)器可以向上計(jì)數(shù)、向下計(jì)數(shù)、向上向下雙向計(jì)數(shù)模式。①向上計(jì)數(shù)模式:計(jì)數(shù)器從0計(jì)數(shù)到自動(dòng)加載值(TIMx_ARR),然后重新從0開始計(jì)數(shù)并且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件。②向下計(jì)數(shù)模式:計(jì)數(shù)器從自動(dòng)裝入的值(TIMx_ARR)開始向下計(jì)數(shù)到0,然后從自動(dòng)裝入的值重新開始,并產(chǎn)生一個(gè)計(jì)數(shù)器向下溢出事件。③中央對(duì)齊模式(向上/向下計(jì)數(shù)):計(jì)數(shù)器從0開始計(jì)數(shù)到自動(dòng)裝入的值-1,產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件,然后向下計(jì)數(shù)到1并且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件;然后再?gòu)?開始重新計(jì)數(shù)。計(jì)數(shù)器模式5.1定時(shí)器介紹向下計(jì)數(shù)模式(時(shí)鐘分頻因子=1)5.1定時(shí)器介紹向上計(jì)數(shù)模式(時(shí)鐘分頻因子=1)5.1定時(shí)器介紹中央對(duì)齊計(jì)數(shù)模式(時(shí)鐘分頻因子=1ARR=6)5.1定時(shí)器介紹計(jì)數(shù)器當(dāng)前值寄存器CNT5.1定時(shí)器介紹預(yù)分頻寄存器TIMx_PSC5.1定時(shí)器介紹自動(dòng)重裝載寄存器(TIMx_ARR)5.1定時(shí)器介紹控制寄存器1(TIMx_CR1)5.1定時(shí)器介紹DMA中斷使能寄存器(TIMx_DIER)5.1定時(shí)器介紹常用庫(kù)函數(shù)voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct);定時(shí)器參數(shù)初始化:voidTIM_Cmd(TIM_TypeDef*TIMx,FunctionalStateNewState)定時(shí)器使能函數(shù):定時(shí)器中斷使能函數(shù):voidTIM_ITConfig(TIM_TypeDef*TIMx,uint16_tTIM_IT,FunctionalStateNewState);5.1定時(shí)器介紹狀態(tài)標(biāo)志位獲取和清除FlagStatusTIM_GetFlagStatus(TIM_TypeDef*TIMx,uint16_tTIM_FLAG);voidTIM_ClearFlag(TIM_TypeDef*TIMx,uint16_tTIM_FLAG);ITStatusTIM_GetITStatus(TIM_TypeDef*TIMx,uint16_tTIM_IT);voidTIM_ClearITPendingBit(TIM_TypeDef*TIMx,uint16_tTIM_IT);5.1定時(shí)器介紹定時(shí)器中斷實(shí)現(xiàn)步驟能定時(shí)器時(shí)鐘。RCC_APB1PeriphClockCmd();②

初始化定時(shí)器,配置ARR,PSC。

TIM_TimeBaseInit();開啟定時(shí)器中斷,配置NVIC。

voidTIM_ITConfig();

NVIC_Init();④

使能定時(shí)器。

TIM_Cmd();⑥

編寫中斷服務(wù)函數(shù)。

TIMx_IRQHandler();5.1定時(shí)器介紹TIM2初始化函數(shù)voidTIM2_Init(u16per,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIM2時(shí)鐘TIM_TimeBaseInitStructure.TIM_Period=per;//自動(dòng)裝載值TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//分頻系數(shù)TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//設(shè)置向上計(jì)數(shù)模式TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//開啟定時(shí)器中斷TIM_ClearITPendingBit(TIM2,TIM_IT_Update);NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;//定時(shí)器中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //IRQ通道使能NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM4,ENABLE);//使能定時(shí)器}5.1定時(shí)器介紹TIM2中斷函數(shù)voidTIM2_IRQHandler(void){if(TIM_GetITStatus(TIM2,TIM_IT_Update)){led1=!led1;}TIM_ClearITPendingBit(TIM2,TIM_IT_Update); }5.1定時(shí)器介紹主函數(shù)#include"system.h"#include"SysTick.h"#include"led.h"#include"time.h"intmain(){u8i;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷優(yōu)先級(jí)分組,分2組LED_Init();TIM2_Init(1000,36000-1);//定時(shí)500mswhile(1){i++;if(i%20==0){led0=!led0;}delay_ms(10);}}

通過(guò)TIM2的更新中斷控制LED1指示燈間隔500ms秒狀態(tài)取反,主函數(shù)控制LED0指示燈不斷閃爍。5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制

脈沖寬度調(diào)制PWM(PulseWidthModulation)是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種技術(shù)手段。就是調(diào)節(jié)一個(gè)周期中高電平所占的百分比,也就是調(diào)節(jié)占空比。比如可以通過(guò)調(diào)節(jié)占空比來(lái)控制直流電機(jī)的通電時(shí)間,以達(dá)到調(diào)速的目的,或通過(guò)調(diào)節(jié)占空比控制加熱時(shí)間,進(jìn)行溫度控制等。5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制STM32PWM工作過(guò)程5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制STM32PWM工作過(guò)程5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制STM32PWM工作過(guò)程(通道1為例)CCR1:捕獲比較(值)寄存器(x=1,2,3,4):設(shè)置比較值。CCMR1:OC1M[2:0]位:

對(duì)于PWM方式下,用于設(shè)置PWM模式1【110】或者PWM模式2【111】CCER:CC1P位:輸入/捕獲1輸出極性。0:高電平有效,1:低電平有效。CCER:CC1E位:輸入/捕獲1輸出使能。0:關(guān)閉,1:打開。5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制PWM模式1&PWM模式25.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制voidTIM_OC2PreloadConfig(TIM_TypeDef*TIMx,uint16_tTIM_OCPreload);voidTIM_ARRPreloadConfig(TIM_TypeDef*TIMx,FunctionalStateNewState);5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制自動(dòng)重載的預(yù)裝載寄存器voidTIM_ARRPreloadConfig(TIM_TypeDef*TIMx,FunctionalStateNewState);簡(jiǎn)單的說(shuō),ARPE=1,ARR立即生效APRE=0,ARR下個(gè)比較周期生效。5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制STM32定時(shí)器3輸出通道引腳5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制PWM輸出配置步驟

使能定時(shí)器3和相關(guān)IO口時(shí)鐘。

使能定時(shí)器3時(shí)鐘:RCC_APB1PeriphClockCmd();

使能GPIOB時(shí)鐘:RCC_APB2PeriphClockCmd();②

初始化IO口為復(fù)用功能輸出。函數(shù):GPIO_Init();

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

這里我們是要把PB5用作定時(shí)器的PWM輸出引腳,所以要重映射配置,

所以需要開啟AFIO時(shí)鐘。同時(shí)設(shè)置重映射。RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);④

初始化定時(shí)器:ARR,PSC等:TIM_TimeBaseInit();⑤

初始化輸出比較參數(shù):TIM_OC2Init();⑥

使能預(yù)裝載寄存器:TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);⑦

使能定時(shí)器。TIM_Cmd();⑧

不斷改變比較值CCRx,達(dá)到不同的占空比效果:TIM_SetCompare2();5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制TIM3通道3的PWM初始化代碼voidTIM3_CH1_PWM_Init(u16per,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStructure;TIM_OCInitTypeDefTIM_OCInitStructure;GPIO_InitTypeDefGPIO_InitStructure;/*開啟時(shí)鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/*配置GPIO模式和IO口*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);//改變指定管腳的映射TIM_TimeBaseInitStructure.TIM_Period=per;//自動(dòng)裝載值TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//分頻系數(shù)TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//設(shè)置向上計(jì)數(shù)模式TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OC1Init(TIM3,&TIM_OCInitStructure);//輸出比較通道3初始化TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能TIMx在CCR1上的預(yù)裝載寄存器TIM_ARRPreloadConfig(TIM3,ENABLE);//使能預(yù)裝載寄存器TIM_Cmd(TIM3,ENABLE);//使能定時(shí)器}

硬件電路只使用到開發(fā)板上的LED0,連接在PB0管腳。要實(shí)現(xiàn)的功能是:通過(guò)TIM3的CH3輸出一個(gè)PWM信號(hào),控制LED0指示燈由暗變亮,再由亮變暗。5.2任務(wù)9使用定時(shí)器實(shí)現(xiàn)PWM控制#include"system.h"#include"SysTick.h"#include"led.h"#include"pwm.h"intmain(){u16i=0;u8fx=0;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷優(yōu)先級(jí)分組,分2組LED_Init();TIM3_CH1_PWM_Init(500,72-1);//頻率是2

溫馨提示

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

評(píng)論

0/150

提交評(píng)論