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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4101|回復: 14
打印 上一主題 下一主題
收起左側

利用STM32核心板去實現呼吸燈,求大神給個思路

  [復制鏈接]
跳轉到指定樓層
樓主
ID:924919 發表于 2021-6-9 12:41 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
利用STM32核心板去實現呼吸燈,利用PWM外設(不能使用延時及中斷服務函數)開發板為STM32F103C8T6

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

使用道具 舉報

沙發
ID:635975 發表于 2021-6-9 13:39 | 只看該作者
可以試試這個,stm32f1的

pwm呼吸燈.zip

2.88 MB, 下載次數: 40

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:716656 發表于 2021-6-9 14:07 | 只看該作者
論壇里搜呼吸燈,你選下是用pwm的,大把。連程序,電路圖啥都有

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:609192 發表于 2021-6-9 14:32 | 只看該作者
呼吸燈可以用PWM和定時器實現
回復

使用道具 舉報

5#
ID:366877 發表于 2021-6-9 14:40 | 只看該作者
呼吸燈實際體現的是PWM波的控制能力,其占空比按照三角波規律實現即可。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:160500 發表于 2021-6-10 12:29 | 只看該作者
呼吸燈好實現,關鍵是給的條件:(不能使用延時及中斷服務函數),這個意思就是純硬件來實現了

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:486138 發表于 2021-6-10 14:48 | 只看該作者
liuzx66 發表于 2021-6-10 12:29
呼吸燈好實現,關鍵是給的條件:(不能使用延時及中斷服務函數),這個意思就是純硬件來實現了

這個要求好奇葩,不用延時好理解,不用中斷還怎么搞

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:81196 發表于 2021-6-15 13:50 | 只看該作者

呼吸燈實際是PWM的占空比決定,也就是單位周期內高低電平的占比大小。這樣就形成了一個可控而且范圍相對比較大的模擬輸出控制。驅動能力可以用小mos/三極管或大功率管都可以.

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:811711 發表于 2021-6-16 11:07 | 只看該作者
呼吸燈就采用PWM,想要多長的間隔,就設置不同的占空比。多看看基礎知識

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

10#
ID:160860 發表于 2021-8-17 12:25 | 只看該作者
建議學習一下正點原子的例程,講解的很詳細,首先學會配置pwm

//TIM3 PWM部分初始化
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預分頻數
void TIM3_PWM_Init(u16 arr,u16 psc)
{  
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);        //使能定時器3時鐘
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外設和AFIO復用功能模塊時鐘
       
        GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5   

   //設置該引腳為復用輸出功能,輸出TIM3 CH2的PWM脈沖波形        GPIOB.5
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復用推挽輸出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO

   //初始化TIM3
        TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數模式
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位
       
        //初始化TIM3 Channel2 PWM模式         
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調制模式2
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
        TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根據T指定的參數初始化外設TIM3 OC2

        TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的預裝載寄存器

        TIM_Cmd(TIM3, ENABLE);  //使能TIM3
       

}



然后在main函數里初始化并調用


int main(void)
{               
        u16 led0pwmval=0;
        u8 dir=1;       
        delay_init();                     //延時函數初始化          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
        uart_init(115200);         //串口初始化為115200
        LED_Init();                             //LED端口初始化
        TIM3_PWM_Init(1000,0);         //不分頻。PWM頻率=72000000/900=80Khz
//    TIM_SetCompare2(TIM3,200);
           while(1)
        {
                delay_us(100);         
                if(dir)led0pwmval++;
                else led0pwmval--;

                if(led0pwmval>300)dir=0;
                if(led0pwmval==0)dir=1;
        LED1=!LED1;        
                  
        }         
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

11#
ID:336165 發表于 2021-8-19 19:34 | 只看該作者
計數唄,while循環里,引腳高低電平切換,計數,計數到給定值,跳到另一個循環,100電平循環,再計數到給定值后,跳到另一個循環里,1000電平跳變,這樣占空比不就改變了么

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

12#
ID:108819 發表于 2021-8-19 21:27 | 只看該作者
你可以去看看正點原子的例程,里面有介紹PWM來實現呼吸燈的效果

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

13#
ID:959346 發表于 2021-8-20 08:40 | 只看該作者
初始化PWM,使用的定時器的時基設小一點,計數值設置大一點(后面可調的范圍大一點),輸出PWM,點亮LED。然后在主循環內,定時遞增PWM占空比->到最大后遞減PWM占空比->到最小后再回到遞增PWM占空比,循環反復,通過調節定時變化的間隔,調節呼吸的速度。
回復

使用道具 舉報

14#
ID:655518 發表于 2021-8-20 09:20 | 只看該作者
不用延時不用中斷的話,那就是定時器計數功能,然后使用定時器的PWM輸出功能應該就可以了
回復

使用道具 舉報

15#
ID:584195 發表于 2021-8-20 09:29 | 只看該作者
Jiang_YY 發表于 2021-8-20 08:40
初始化PWM,使用的定時器的時基設小一點,計數值設置大一點(后面可調的范圍大一點),輸出PWM,點亮LED。然 ...

此樓是正解!
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久国产精品免费免费 | 殴美黄色录像 | 日韩免费成人av | 四虎影院免费在线播放 | 一级片在线免费看 | 精品九九九 | 国产精品毛片无码 | 91麻豆精品国产91久久久更新资源速度超快 | 日本精品一区二区三区在线观看 | 久久久久一区二区三区四区 | 黄视频网站免费观看 | 精品国产一二三区 | 天天干天天爽 | 欧美大片一区二区 | 日韩午夜影院 | 国产午夜高清 | 中文字幕在线视频一区二区三区 | 国产日韩欧美另类 | 成人免费大片黄在线播放 | 国产视频在线一区二区 | 999久久久 | 国产精品久久久久久久久久三级 | 国产精品美女久久久久久免费 | 国产午夜高清 | 欧美久久国产精品 | 久久综合一区 | 中文字幕视频网 | 日韩一区二区三区在线观看视频 | 久久美女网 | 国产99久久 | caoporn视频 | 欧美性区| 免费视频99 | 精品欧美一区二区三区久久久小说 | 国产乱码精品一区二区三区五月婷 | 日本啊v在线 | 亚洲综合一区二区三区 | 国产综合精品一区二区三区 | 久久久久久久国产 | 欧美大片在线观看 | 草草草久久久 |