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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32單片機控制TIM3四路PWM輸出,無線串口接收數據 源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:316613 發表于 2022-7-2 21:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
項目,STM32控制TIM3四路PWM輸出,無線串口接收數據

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "timer.h"


  7. void baojing_jiance()
  8. {
  9.     int i ;
  10.     if((USART_RX_STA & 0x8000) != 0) //接收完成
  11.     {
  12.         USART_RX_STA = 0;

  13.         if(USART_RX_BUF[0] == '0' && USART_RX_BUF[1] == '0' ) // 01xxxx
  14.         {
  15.             EX = 1; //啟動可燃氣體報警
  16.         }
  17.         else         if(USART_RX_BUF[0] == '1' && USART_RX_BUF[1] == '1' ) // 01xxxx
  18.             EX = 0;

  19.         if(USART_RX_BUF[2] == '0' && USART_RX_BUF[3] == '0' ) //xx23xxxx
  20.         {
  21.             H2S = 1; //啟動 硫化氫報警
  22.         }
  23.         else  if(USART_RX_BUF[2] == '1' && USART_RX_BUF[3] == '1' ) //xx23xxxx
  24.             H2S = 0;


  25.         if(USART_RX_BUF[4] == '0' && USART_RX_BUF[5] == '0' ) //xxxx45xxxx
  26.         {
  27.             O2 = 1; //啟動氧氣報警
  28.         }
  29.         else if(USART_RX_BUF[4] == '1' && USART_RX_BUF[5] == '1' ) //xxxx45xxxx
  30.             O2 = 0;

  31.         if(USART_RX_BUF[6] == '0' && USART_RX_BUF[7] == '0' ) //xxxxxx67xxxxx
  32.         {
  33.             CO = 1; //啟動 一氧化碳報警
  34.         }
  35.         else if(USART_RX_BUF[6] == '1' && USART_RX_BUF[7] == '1' ) //xxxxxx67xxxxx
  36.             CO = 0;



  37.         for(i = 0; i < 10; i++)
  38.         {
  39.             USART_RX_BUF[i] = 0;
  40.         }


  41.     }
  42. }

  43. /*
  44.     1000對應0 。
  45.         氧氣 :  680     對應20.9        19.5-23.5報警
  46.         可燃氣:  800    對應 25%左右    20-50報警
  47.         一氧化碳: 900   對應 270ppM    50-150報警
  48.         硫化氫:  900    對應11PPM       10-20報警
  49. */

  50. void  pwm_out()
  51. {

  52.     /****************可燃氣報警********************/
  53.     if(EX == 1) //
  54.     {

  55.         //        printf("EX");
  56.         TIM_SetCompare4(TIM3, 800);         // 0V            EX 可燃氣
  57.     }
  58.     else if(EX == 0) //可燃氣默認狀態
  59.     {
  60.         TIM_SetCompare4(TIM3, 1000);         // 0V            EX 可燃氣
  61.     }


  62.     /****************硫化氫報警***********************/
  63.     if(H2S == 1)
  64.     {

  65.         //        printf("H2S");
  66.         TIM_SetCompare1(TIM3, 850);          //0v      H2S 硫化氫
  67.     }
  68.     else if(H2S == 0) //硫化氫默認狀態
  69.     {
  70.         TIM_SetCompare1(TIM3, 1000);          //0v      H2S 硫化氫
  71.     }



  72.     /******************氧氣上限報警****************/
  73.     if(O2 == 1)
  74.     {

  75.         //        printf("O2");
  76.         TIM_SetCompare3(TIM3, 400);         //0.3V    O2 氧氣  19.5-23.5報警
  77.     }
  78.     else if(O2 == 0) //氧氣默認狀態
  79.     {
  80.         TIM_SetCompare3(TIM3, 680);         //0.3V    O2 氧氣  19.5-23.5報警
  81.     }





  82.     /*****************一氧化碳報警*******************/
  83.     if(CO == 1)
  84.     {

  85.         //                printf("CO");
  86.         TIM_SetCompare2(TIM3, 900);          //0v     CO 一氧化碳
  87.     }
  88.     else if(CO == 0) //一氧化碳默認狀態
  89.     {
  90.         TIM_SetCompare2(TIM3, 1000);          //0v     CO 一氧化碳
  91.     }

  92. }

  93. int main(void)
  94. {
  95.     u8 i ;
  96.     u16 led0pwmval = 0;
  97.     u8 dir = 1;
  98.     delay_init();                     //延時函數初始化
  99.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  100.     uart_init(9600);         //串口初始化為115200
  101.     LED_Init();                             //LED端口初始化
  102.     TIM3_PWM_Init(1000 - 1, 0);         //不分頻。PWM頻率=72000000/1000=72Khz
  103.     while(1)
  104.     {
  105.         delay_ms(10);

  106. //                if(dir)        led0pwmval++;
  107. //                else         led0pwmval--;
  108. //                 if(led0pwmval>500)        dir=0;
  109. //                if(led0pwmval==0)        dir=1;

  110.         baojing_jiance();//串口數據判斷
  111.         pwm_out();        //控制PWM輸出
  112.     }
  113. }
復制代碼

Keil代碼下載:
Keil代碼.7z (187.98 KB, 下載次數: 42)

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 激情av网站 | 91天堂网| 在线观看国产三级 | 欧美成人一区二区三区 | 日韩一区二区三区在线视频 | 一区二区视频在线 | 日韩三级免费网站 | 91视频在线网站 | 国产高清不卡 | 精品永久| 日本不卡一区二区三区在线观看 | 精品欧美一区二区久久久伦 | 欧美精品一区二区三区在线播放 | 成人欧美日韩一区二区三区 | 欧美中文字幕一区二区 | 夜夜骚视频 | 在线成人精品视频 | 久久视频免费观看 | 国产一区二区三区 | 久久久久久九九九九 | 日韩一区在线播放 | 亚洲视频免费在线观看 | 中文字幕精品一区二区三区精品 | 一区二区三区国产好 | 亚洲成人日韩 | 日韩视频精品在线 | 99久久久99久久国产片鸭王 | 日韩三级在线观看 | 亚洲精品视频在线播放 | 免费在线一区二区 | 婷婷色国产偷v国产偷v小说 | 免费亚洲视频 | 午夜伦4480yy私人影院 | 午夜精品久久久久久久久久久久 | 久草电影网 | 亚洲人人舔人人 | 日屁视频 | 欧美精品久久久久久久久久 | 欧美精品一区二区三区四区 在线 | 凹凸日日摸日日碰夜夜 | 国产精品久久久久久久久久免费 |