0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于stm32的PWM輸出呼吸燈(包括stm32呼吸燈代碼)

ss ? 來源:網(wǎng)絡整理 ? 2018-03-28 16:23 ? 次閱讀

基于stm32的pwm呼吸燈

使用定時器來控制I/O口輸出PWM波形,從而驅動LED燈出現(xiàn)類似呼吸頻率一般的亮滅。

硬件電路圖:

基于stm32的pwm呼吸燈

我的收獲:

基于stm32的pwm呼吸燈

這是STM32數(shù)據(jù)手冊上對TIM3通用定時器復用功能重映象的描述,假設讓PA6作為PWM輸出,從圖中可以看出PA6對應TIM3的通道1,

使能TIM3通道1的函數(shù)為

TIM_OC1Init();1

同樣的,如果想要使能PA7,它對應的是TIM3的通道2,那么使能通道2的函數(shù)便是:

TIM_OC2Init()1

以此類推,需要注意,使能不同相同定時器不同通道的函數(shù)是有一點小差別的,防止在程序中調用TIM_OC1Init()函數(shù)來使能TIM3通道2這種情況的發(fā)生。

基于stm32的pwm呼吸燈

注意看這里,假設使用的是TIM3的通道1,那么這里就要寫成

TIM3-》CCR11

類似的如果用TIM3定時器的通道2,這里就要相應的改為

TIM3-》CCR21

這同樣是為了防止本來計劃使用的是TIM3的通道1,反而在這里自擺烏龍寫為了TIM-》CCR2的情況,這樣的錯誤一般很隱蔽,不容易查找。

相應的程序已經上傳,但是不知道為什么在這里無法顯示程序的下載地址,需要下載可以去我的資源里下載。

工程文件為

Progect–》RVMDK(uv4)–》iSO_STM32

基于stm32的pwm呼吸燈

STM32PWM輸出實現(xiàn)LED燈漸亮漸滅程序:

/**說明:

*PA0:KEY1;PA1:KEY2;

*PA2:LED1;PA3:LED2;

*PA9:USART1_TX;PA10:USART1_RX

*/

#include “stm32f10x.h”

#include “stm32f10x_rcc.h”

#include “stm32f10x_gpio.h”

#include “stm32f10x_tim.h”

#include “stm32f10x_pwr.h”

#include “stm32f10x_exti.h”

#include “system_stm32f10x.h”

#include “misc.h”

void RCC_Configuration(void);

void GPIO_Configuration(void);

void TIM2_Configuration(void);

void delay_ms(u16 time);

int main()

{

u8 led_fx=1;

u16 led_dt=0;

RCC_Configuration();

GPIO_Configuration();

TIM2_Configuration();

while(1)

{

delay_ms(10);

if(led_fx==1)

{

led_dt++;

}else{

led_dt--;

}

if(led_dt》100) led_fx=0;//可以和初始值一樣

if(led_dt==0) led_fx=1;

TIM_SetCompare3(TIM2,led_dt);//通道3沒有重影像是PA2對應LED1

TIM_SetCompare4(TIM2,led_dt);//通道4沒有重影像是PA3對應LED2

}

}

void RCC_Configuration(void)

{

SystemInit();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

//GPIO_AFIODeInit();和下面相同效果,可以查看源碼證明

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

}

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

//GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,ENABLE);//端口映射函數(shù)

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;//GPIO_Pin_3對應channel3,主函數(shù)改為:TIM_SetCompare3

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

void TIM2_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_DeInit(TIM2);

TIM_InternalClockConfig(TIM2);

//定時器初始化

TIM_TimeBaseStructure.TIM_Period = 100-1;//初始值是100,2MHz=2000KHz,2MHz/100=0.02MHz,所有周期T=1/0.02MHz=50us,示波器顯示周期應該為50us

TIM_TimeBaseStructure.TIM_Prescaler = 36-1;//36倍分頻,72MHz/36=2MHz

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

//PWM初始化

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse = 50;//占空比值是50,所以占空比是:50/100=50%

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

TIM_OC3Init(TIM2,&TIM_OCInitStructure);

TIM_OCInitStructure.TIM_Pulse = 20;

TIM_OC4Init(TIM2,&TIM_OCInitStructure);

//TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Enable);

//TIM_ARRPreloadConfig(TIM2, ENABLE);

TIM_Cmd(TIM2,ENABLE);

TIM_CtrlPWMOutputs(TIM2,ENABLE);

}

void delay_ms(u16 time)

{

u16 i=0;

while(time--)

{

i=12000;

while(i--);

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5186

    瀏覽量

    213972
  • STM32
    +關注

    關注

    2270

    文章

    10900

    瀏覽量

    356091
  • 呼吸燈
    +關注

    關注

    10

    文章

    110

    瀏覽量

    42736
收藏 人收藏

    評論

    相關推薦

    基于stm32PWM呼吸工程分享

    使用pwm波調整led的亮度,其中l(wèi)ed的文件包含在附件里面,代碼如下:通過TIM3通用定時器的CH1通道輸出一個PWM波,并調整
    發(fā)表于 07-02 07:51

    基于stm32PWM呼吸工程分享

    使用pwm波調整led的亮度,其中l(wèi)ed的文件包含在附件里面,代碼如下:通過TIM3通用定時器的CH1通道輸出一個PWM波,并調整
    發(fā)表于 07-06 07:37

    怎么通過PWM來實現(xiàn)呼吸

    說下我是怎么通過這個PWM來實現(xiàn)呼吸的。硬件的準備就不說了,想實現(xiàn)呼吸的你這個硬件配置肯定是莫得問題。我重點說下這個
    發(fā)表于 08-11 06:17

    STM32Cube如何配置PWM呼吸?

    STM32Cube如何配置PWM呼吸?
    發(fā)表于 11-23 07:17

    基于stm32 f103的pwm呼吸程序代碼分享

    基于stm32 f103的pwm呼吸程序代碼分享
    發(fā)表于 12-14 07:52

    PWM實現(xiàn)呼吸的應用

    stm32實現(xiàn)PWM最簡單方法前言一、PWM概念二、PWM應用輸出比較功能框圖三、PWM
    發(fā)表于 01-21 13:18

    STM32呼吸的原理是什么

    前段時間學習stm32的時候就做過呼吸實驗,瀏覽了一些博客后,做下總結呼吸原理其實是利用pwm
    發(fā)表于 02-21 07:26

    STM32實現(xiàn)PWM呼吸的程序合集免費下載

    本文檔的主要內容詳細介紹的是STM32實現(xiàn)PWM呼吸的程序合集免費下載。
    發(fā)表于 03-19 08:00 ?16次下載
    <b class='flag-5'>STM32</b>實現(xiàn)<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>的程序合集免費下載

    STM32_PWM呼吸

    全面屏發(fā)展,因此很多手機取消了呼吸這一功能,取而代之的是息屏顯示)2、什么是PWM?PWM:Pulse Width Modulation,脈沖寬度調制,是利用微處理器的數(shù)字
    發(fā)表于 11-26 12:21 ?20次下載
    <b class='flag-5'>STM32_PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    STM32開發(fā)入門(三)——呼吸

    STM32開發(fā)入門(三)——呼吸
    發(fā)表于 12-07 17:36 ?25次下載
    <b class='flag-5'>STM32</b>開發(fā)入門(三)——<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    STM32呼吸原理

    前段時間學習stm32的時候就做過呼吸實驗,瀏覽了一些博客后,做下總結呼吸原理其實是利用pwm
    發(fā)表于 12-24 19:27 ?20次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>原理

    STM32 使用PWM實現(xiàn)呼吸

    STM32 PWM實現(xiàn)呼吸使用STM32F103ZET6 定時器4 CH2通道產生PWM波,在
    發(fā)表于 12-24 19:41 ?55次下載
    <b class='flag-5'>STM32</b> 使用<b class='flag-5'>PWM</b>實現(xiàn)<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    stm32使用延時實現(xiàn)呼吸寄存器版

    stm32使用延時實現(xiàn)呼吸(寄存器)該實驗是使用STM32F103C8T6實現(xiàn),使用寄存器編程。呼吸
    發(fā)表于 01-18 10:33 ?0次下載
    <b class='flag-5'>stm32</b>使用延時實現(xiàn)<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>寄存器版

    基于HAL庫的STM32呼吸實驗

    STM32 ,則可以更加便捷、靈活地實現(xiàn)呼吸的控制。因此,本文將介紹基于 STM32呼吸
    的頭像 發(fā)表于 05-14 16:41 ?2107次閱讀
    基于HAL庫的<b class='flag-5'>STM32</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>實驗

    通過STM32實現(xiàn)PWM呼吸的教程

    顧名思義,就是一個。的亮度的變化,由亮變暗,從暗變亮,有一個漸變,規(guī)律的變化,像是人的呼吸,是呼吸,所以叫
    的頭像 發(fā)表于 07-26 15:20 ?1.3w次閱讀
    通過<b class='flag-5'>STM32</b>實現(xiàn)<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>的教程