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

標題: stm32f103c8t6如何使用pwm調節四檔燈光亮度 [打印本頁]

作者: 2369515798    時間: 2024-2-1 15:10
標題: stm32f103c8t6如何使用pwm調節四檔燈光亮度
求助!編寫的程序不知道哪里出了錯!調節不了亮度#include "stm32f10x.h"                   //包含stm32f10x.h的頭文件
void delay_nms(uint16_t ms) //定義毫秒延時子函數
{
                uint16_t i;//定義無符號字符型
                for(;ms>0;ms--)        //毫秒級
                for(i=10000;i>0;i--);       
}

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

void KEY_config(void) //KEY_按鍵的初始化配置函數
{
                GPIO_InitTypeDef gpio;                 //定義結構體
                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;//復用推挽輸出
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        TIM_TimeBaseInitStructure.TIM_Period=per;   //自動裝載值
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //分頻系數
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //設置向上計數模式
        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 上的預裝載寄存器
        TIM_ARRPreloadConfig(TIM3,ENABLE);//使能預裝載寄存器
       
        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函數
        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);//函數,把PWM變量的值寫入TIM2的輸出通道3的CCR寄存器中,修改PWM占空比。
        }
}


作者: 2369515798    時間: 2024-2-1 15:20
LED燈光接到的PA7口,PA7是定時器3的二通道




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 免费网站观看www在线观 | 国产一区在线播放 | 在线观看成人免费视频 | 免费网站黄色 | 欧美三级在线视频 | 一级黄色在线观看 | 日韩免费网站 | 亚洲超碰在线 | 久久免费视频网站 | 日韩免费一区二区三区 | 日韩高清国产一区在线 | 日韩免费精品视频 | 国产精品区二区三区日本 | 神马午夜影院 | 国产精品久免费的黄网站 | 久久九九视频 | 一级片久久 | 日韩在线成人 | 精品热久久 | 三级黄网站 | 色综合久久久久 | 亚洲精品三级 | 日本三级韩国三级美三级91 | 日韩1级片 | 这里只有精品在线观看 | 日日撸夜夜操 | av天天操 | 亚洲一级片| 三级av在线 | 毛片视频免费 | 久久艹av | 日韩二三区 | 午夜在线视频观看 | 在线观看h片 | www.男人天堂 | 综合av | 国产成人av一区二区三区在线观看 | 国产不卡视频 | 亚洲美女网站 | 成人精品 | 久草手机在线视频 |