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

          新聞中心

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

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

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

          1、概述

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

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

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

          2、源程序

          void TIMx_Config(void) {

          TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;//時(shí)基單元配置數(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;//即用于定時(shí)2通道3

          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

          GPIO_Init(GPIOA, &GPIO_InitStructure);

          TIM_TimeBaseStructure.TIM_Period = CCR3_Val;//40寫(xiě)入自動(dòng)裝載寄存器,150KHz輸出。

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

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

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

          TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

          TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

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

          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//開(kāi)啟輸出通道

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

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

          TIM_OC3Init(TIM2, &TIM_OCInitStructure);

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

          TIM_Cmd(TIM2, ENABLE);

          //TIM_ITConfig(TIM2, TIM_IT_CC3, ENABLE);

          }

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

          二、串口的配置

          按鍵輸入命令不怎么方便,很快我就要編寫(xiě)串口通信程序,用串口輸入命令,控制開(kāi)發(fā)板。串口配置用庫(kù)函數(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程序源代

          評(píng)論


          技術(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); })();