久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1397|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

stm32f103c8t6如何使用pwm調(diào)節(jié)四檔燈光亮度

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1110508 發(fā)表于 2024-2-1 15:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助!編寫的程序不知道哪里出了錯!調(diào)節(jié)不了亮度#include "stm32f10x.h"                   //包含stm32f10x.h的頭文件
void delay_nms(uint16_t ms) //定義毫秒延時子函數(shù)
{
                uint16_t i;//定義無符號字符型
                for(;ms>0;ms--)        //毫秒級
                for(i=10000;i>0;i--);       
}

//LED的初始化配置函數(shù)
void LED_config(void)                                                                                                       
{
        GPIO_InitTypeDef gpio;         //定義InitTypeDef類型的結(jié)構(gòu)體指針 gpio
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA的外設(shè)時鐘
        gpio.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出
        gpio.GPIO_Pin=GPIO_Pin_7;
        gpio.GPIO_Speed=GPIO_Speed_2MHz;                                //速度50MHZ
        GPIO_Init(GPIOA,&gpio);                                                                  //調(diào)用GPIO_Init函數(shù) 對GPIOA口初始化
}

void KEY_config(void) //KEY_按鍵的初始化配置函數(shù)
{
                GPIO_InitTypeDef gpio;                 //定義結(jié)構(gòu)體
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);        //使能GPIOA的時鐘
                gpio.GPIO_Mode=GPIO_Mode_IPU;        //輸入上拉模式
                gpio.GPIO_Pin=GPIO_Pin_15;
          GPIO_Init(GPIOA,&gpio);                          //GPIOA口初始化
}

uint8_t KEY_scan(void) //判別哪個按鍵按下程序 按鍵掃描
{
                uint8_t rtl;        //定義一個rtl,用來接收按鍵返回的值
                if((GPIO_ReadInputData(GPIOA)&0xF)==0XF)// 判別是否有 鍵按下
                return 0xff;                //如果沒有按鍵按下,返回FF
                delay_nms(10);        //延時消抖
                if((GPIO_ReadInputData(GPIOA)&0XF)==0XF) //再次判別是否有鍵按下_
                return 0xff;                //如果沒有按鍵按下,返回FF
                rtl=GPIO_ReadInputData(GPIOA)&0xF;                //返回鍵值               
                while((GPIO_ReadInputData(GPIOA)&0XF)!=0XF); //等待按鍵釋放
                return rtl;                        //返回鍵值                                                                                                               
}

void TIM3_CH2_PWM_Init(u16 per,u16 psc)//TIM2定時器中斷PWM波的初始化配置
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
       
        /* 開啟時鐘 */
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
       
        /*  配置GPIO的模式和IO口 */
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        TIM_TimeBaseInitStructure.TIM_Period=per;   //自動裝載值
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //分頻系數(shù)
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //設(shè)置向上計數(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_OC2Init(TIM3,&TIM_OCInitStructure); //輸出比較通道2初始化
       
        TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable); //使能TIMx在 CCR2 上的預(yù)裝載寄存器
        TIM_ARRPreloadConfig(TIM3,ENABLE);//使能預(yù)裝載寄存器
       
        TIM_Cmd(TIM3,ENABLE); //使能定時器               
}
int main(void)
{
        uint16_t PWM=1000; //定義PWM波初始值為1000   即CRR的值
        LED_config();//初始化燈
        KEY_config();//初始化按鍵
        TIM3_CH2_PWM_Init(500,72-1);        //初始化PWM函數(shù)
        while(1)
        {
                if(KEY_scan()==0xe)//按鍵按下
                {
                        PWM-=200;   //CCR的值右移一位,即除以2     原始PWM值:100%  按鍵按一次除一次為: 50%,25%,12.5%
                        if(PWM==0)//若CCR和seg的值小于125,則再賦值=為1000。
                        {
                                PWM=1000;
                        }
                }
                        TIM_SetCompare2(TIM3,PWM);//函數(shù),把PWM變量的值寫入TIM2的輸出通道3的CCR寄存器中,修改PWM占空比。
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1110508 發(fā)表于 2024-2-1 15:20 | 只看該作者
LED燈光接到的PA7口,PA7是定時器3的二通道
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲色网址 | 97在线观看免费视频 | 亚洲国产欧美日韩在线 | 欧美爱爱网 | 国产一区在线看 | 欧美一区二区三区视频 | 国产一级18片视频 | 夜夜操天天 | www.97超碰 | 五月婷婷激情综合 | 国产一区高清 | 午夜成人影片 | 国产精品国产三级国产aⅴ浪潮 | 婷婷综合网 | 国产小视频在线 | 欧美在线| 久久久www成人免费精品 | 婷婷国产 | 深夜福利网站 | 亚洲综合伊人 | 国产成人一区 | 伊人成人在线 | 中文字幕精品一区久久久久 | 超碰麻豆 | 在线网站免费观看18 | 国产日韩精品在线 | 无遮挡在线观看 | 久久99热这里只频精品6学生 | 国产精品成人一区 | 欧美亚洲一区 | 在线观看a视频 | 9l视频自拍九色9l视频成人 | 欧美日韩激情视频 | 黄色成年人视频 | 亚洲黄色影院 | 日韩福利一区 | 国产aaaaaa | 午夜a级片| 极品美女一区二区三区 | 超碰一区二区 | 免费一区 |