色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > stm32的PWM實現過程

stm32的PWM實現過程 時間:2018-01-08      來源:未知

PWM是定時器擴展出來的一個功能(本質上是使用一個比較計數器的功能),配置過程一般為選定定時器、復用GPIO口、選擇通道(傳入比較值)、使能相應系統時鐘、設定相應的預分頻、計數周期、PWM模式(有兩種)、電平極性等。具體介紹如下:

一、定時器的特點歸類

STM32中一共有11個定時器,即 2個看門狗定時器、1個系統嘀嗒定時器(SysTick)及8個Timer定時器,詳情如下表所示。

定時器 計數器分辨率 計數器類型 預分頻系數 產生DMA請求 捕獲/比較通道 互補輸出
TIM1
TIM8
16位 向上,向下,向上/向下 1-65536之間的任意數 可以 4
TIM2
TIM3
TIM4
TIM5
16位 向上,向下,向上/向下 1-65536之間的任意數 可以 4 沒有
TIM6
TIM7
16位 向上 1-65536之間的任意數 可以 0 沒有










二、定時器所在時鐘線路

stm32的PWM實現過程

三、PWM波形產生的原理

通用定時器可以利用GPIO引腳進行脈沖輸出,在配置為比較輸出、PWM輸出功能時,捕獲/比較寄存器TIMx_CCR被用作比較功能,下面把它簡稱為比較寄存器。

這里直接舉例說明定時器的PWM輸出工作過程:若配置脈沖計數器TIMx_CNT為向上計數,而重載寄存器TIMx_ARR被配置為N,即TIMx_CNT的當前計數值數值X在TIMxCLK時鐘源的驅動下不斷累加,當TIMx_CNT的數值X大于N時,會重置TIMx_CNT數值為0重新計數。

四、STM32產生PWM的配置方法

1、配置GPIO口:

查看具體的GPIO引腳,以及查看GPIO口的復用功能(參考手冊),我們這塊用的是PC6。

a.定時器1的引腳復用功能映像:

stm32的PWM實現過程

b.定時器2的引腳復用功能映像:

stm32的PWM實現過程

c.定時器3的引腳復用功能映像:

stm32的PWM實現過程

d.定時器4的引腳復用功能映像:

stm32的PWM實現過程

根據以上重映像表,我們使用定時器3的通道2作為PWM的輸出引腳,所以需要對PB5引腳進行配置,對IO口操作代碼:

GPIO_InitTypeDef GPIO_InitStructure;//定義結構體

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);//使能GPIO外設和AFIO復用功能模塊時鐘

GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //選擇Timer3完全重映像

//選擇定時器3的通道1作為PWM的輸出引腳TIM3_CH1->PB6 GPIOC.6

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //TIM_CH1

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化引腳

2、初始化定時器

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定義初始化結構體

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定時器3時鐘

//初始化TIM3

TIM_TimeBaseStructure.TIM_Period = 255; //自動重裝載寄存器的值

TIM_TimeBaseStructure.TIM_Prescaler =7199; //TIMX預分頻的值

TIM_TimeBaseStructure.TIM_ClockDivision = 0; //時鐘分割

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據以上功能對定時器進行初始化

3、設置TIM3_CH1的PWM模式,使能TIM3的CH1輸出

TIM_OCInitTypeDef TIM_OCInitStructure;//定義結構體

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//選擇定時器模式,TIM脈沖寬度調制模式1

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比較輸出使能

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//輸出比較極性低

TIM_OC1Init(TIM3, &TIM_OCInitStructure);//根據結構體信息進行初始化

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能定時器TIM2在CCR1上的預裝載值

4、使能定時器3

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

5、使用PWM

經過上述操作,我們只需調用函數(如下)給通道1傳值即可實現PWM波形正常輸出。

static void PWM_Channel1_Out(u16 pwm)

{

TIM3->CCR1 = pwm;

}

上一篇:C語言常用排序算法

下一篇:Linux底層驅動開發需要學習哪些內容

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 日本黄色免费小视频 | 丰满少妇猛烈进入A片99A | 欧美人成片免费看视频 | 亚洲日韩成人无码不卡网站 | 浴室里强摁做开腿呻吟的视频 | 40岁大乳的熟妇在线观看 | 华人少妇被黑人粗大的猛烈进 | 国产日产亚洲系列最新美使用方法 | 精品无码av一区二区三区 | 亚洲A无码综合A国产AV中文 | 性色欲情侣网站WWW 嫩草在线视频 | 成年美女黄网站色大片 | 欧美精品国外破除大片扒开特写 | 爆乳喷奶水无码正在播放 | 日韩精品成人一区二区三区视频 | 中文字幕高清在线免费播放 | 久久免费影视 | 四虎影院免费在线 | 毛片网在线 | www91在线| 理论片免费ā片在线观看 | 全部AV―极品视觉盛宴 | 狠狠躁夜夜躁人人爽天天天天 | 男男高H啊灌满了高潮视频 视频在线观看国产 | 国产在线观看成人 | 97SE亚洲国产综合自在线 | 绯色一区二区二区av免费 | 老骚老太太肥B在线看 | FREE性少妇饥渴XXⅩXXHD | 少妇仑乱A毛片 | YW193.CAN尤物国产在线网页 | 2020精品国产自在现线看 | 经典国产乱子伦精品视频 | 国产精品人成A片一区二区 亚洲国产精品成人精品无码区在线 | 国产一二区老熟女 | 欧美ZC00O人与善交 | 亚洲熟女乱综合一区二区 | 无码无遮挡在线观看免费 | 奇米四色影院 | 欧美黄网址 | 国产在线国偷精品免费看 |