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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2162|回復: 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)

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区 | 涩涩视频网站在线观看 | 中文字幕不卡在线观看 | 久久精品 | 亚洲一区二区三区免费视频 | 成人伊人 | 成人二区 | 日韩欧美高清 | 国产精品毛片一区二区三区 | 成人国产免费视频 | 一区二区三区欧美 | 午夜小电影 | 亚洲网视频 | 中文字幕免费在线 | 国产综合久久久久久鬼色 | www.日韩av.com | 国产一区二区三区免费 | 欧美一区在线视频 | 精品成人av| 真人女人一级毛片免费播放 | 亚州视频在线 | 精品久久久久久亚洲综合网 | 国产a区 | 96国产精品久久久久aⅴ四区 | 欧美黄色网络 | 美女高潮网站 | 国产毛片毛片 | 国产欧美在线观看 | 粉嫩粉嫩芽的虎白女18在线视频 | 天天操 天天操 | 一区二区三区精品在线视频 | 久久久久久久国产 | 亚洲精品久久久久久一区二区 | 国产精品视频一区二区三区四蜜臂 | 国产日韩一区二区三区 | 黄色国产大片 | 91av亚洲| 久久久久国产一区二区 | 一区二区三区福利视频 | 亚洲免费一 | 中文在线一区二区 |