<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 智林STM32程序源代碼的分析和整理04

          智林STM32程序源代碼的分析和整理04

          作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          一、定時器的配置

          1、概述

          本文引用地址:http://www.ex-cimer.com/article/201611/322961.htm

          STM32的定時器功能比較多、配置也較復(fù)雜,我現(xiàn)在了解不多,邊用邊學(xué)吧。智林開發(fā)板上有兩個用定時器的地方,一個是液晶的背光電源,要求輸出一定的PWM波形,用于整流提供電源;二是用于控制喇叭,也是時鐘脈沖輸出。

          定時器首先的選擇是計數(shù)、還是定時,我這里用的都是定時,輸出模式可以是輸入時定時器的捕獲,可以是比較匹配時設(shè)定輸出(經(jīng)常用到這一種)。

          2、源程序

          void TIMx_Config(void) {

          TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;//時基單元配置數(shù)據(jù)結(jié)構(gòu)

          TIM_OCInitTypeDefTIM_OCInitStructure;//輸出模式設(shè)置數(shù)據(jù)結(jié)構(gòu)

          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//PA2,復(fù)用輸出模式

          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//即用于定時2通道3

          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

          GPIO_Init(GPIOA, &GPIO_InitStructure);

          TIM_TimeBaseStructure.TIM_Period = CCR3_Val;//40寫入自動裝載寄存器,150KHz輸出。

          TIM_TimeBaseStructure.TIM_Prescaler = 2;//分頻系數(shù)3

          TIM_TimeBaseStructure.TIM_ClockDivision = 0;//與什么采樣相關(guān),這里用不到

          //向上計數(shù)的特點(diǎn)是:從0到加載值,產(chǎn)生溢出;然后重新從0計數(shù)。

          TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

          TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

          TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;//定時器計數(shù)與比較通道匹配時翻轉(zhuǎn)

          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//開啟輸出通道

          TIM_OCInitStructure.TIM_Pulse = CCR3_Val;//比較通道的計數(shù)值

          TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//低電平有效

          TIM_OC3Init(TIM2, &TIM_OCInitStructure);

          TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);//自動重裝載,預(yù)裝載

          TIM_Cmd(TIM2, ENABLE);

          //TIM_ITConfig(TIM2, TIM_IT_CC3, ENABLE);

          }

          這里只列出了液晶使用的定時器2通道3的輸出,輸出150kHz的頻率。沒用到中斷。這個頻率是怎么得到的呢?首先是TIM2使用APB1的36M,經(jīng)過預(yù)分頻,分頻系數(shù)為(Prescaler+1)=3,3分頻后為12MHz。計數(shù)周期為40,計數(shù)到40與輸出比較寄存器產(chǎn)生匹配,觸發(fā)輸出翻轉(zhuǎn),然后計數(shù)器重新開始計數(shù)。故輸出通道的頻率為12MHz除以80,得到150kHz。

          二、串口的配置

          按鍵輸入命令不怎么方便,很快我就要編寫串口通信程序,用串口輸入命令,控制開發(fā)板。串口配置用庫函數(shù)很方便。

          void UART_Config(void){//進(jìn)行串口的初始化配置

          USART_InitTypeDef USART_InitStructure;

          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

          GPIO_Init(GPIOA, &GPIO_InitStructure);

          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

          USART1->BRR =0x0271;

          USART_Cmd(USART1, ENABLE);

          }



          關(guān)鍵詞: 智林STM32程序源代

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();