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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32 TIM8 6路互補三相SPWM波形輸出 源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:782771 發表于 2020-6-18 11:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我之前寫的STM32的SPWM波形程序,使用TIM8的三對互補端口進行波形產生。

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "SysTickDelay.h"
  3. #include "misc.h"
  4. #include "remote.h"

  5. u32 Remote_Odr=0; //命令暫存
  6. u8 Remote_Cnt=0;  //按鍵按下次數
  7. u8 Remote_Rdy=0;  //紅外接收到數據

  8. /*****紅外鍵盤初始化****/
  9. void Remote_Init(void)          //初始化
  10. {          
  11.           GPIO_InitTypeDef   GPIO_InitStructure;
  12.           EXTI_InitTypeDef   EXTI_InitStructure;
  13.           NVIC_InitTypeDef   NVIC_InitStructure;

  14.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ; //選擇引腳2
  15.       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入模式
  16.       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //輸出頻率最大50MHz
  17.       GPIO_Init(GPIOC,&GPIO_InitStructure);

  18.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource10);  //配置中斷線路PC.2

  19.           EXTI_InitStructure.EXTI_Line = EXTI_Line10;
  20.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  21.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
  22.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;                   //使能中斷
  23.           EXTI_Init(&EXTI_InitStructure);
  24.                    
  25.             NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //中斷向量組2

  26.       NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel ;
  27.       NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;        //搶占優先級0
  28.       NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                  //響應優先級0
  29.       NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  30.       NVIC_Init(&NVIC_InitStructure);
  31. }
  32. /**********檢測脈沖寬度**************************************/
  33. /**********最長脈寬5ms***************************************/
  34. /**********返回值:x,代表x*20us*****************************/
  35. u8 Pulse_Width_Check(void)
  36. {
  37.         u8 t=0;
  38.         while(RDATA)
  39.         {
  40.                 t++;delay_us(20);
  41.                 if(t==250)return t;
  42.         }
  43.         return t;
  44. }
  45. /********中斷處理程序*******************************/
  46. void EXTI15_10_IRQHandler(void)
  47. {
  48.         u8 res=0;
  49.         u8 OK=0;
  50.         u8 RODATA=0;
  51.         while(1)
  52.         {
  53.                 if(RDATA)
  54.                         {
  55.                         res=Pulse_Width_Check();
  56.                         if(res==250)break;
  57.                         if(res>=200&&res<=250)OK=1;
  58.                         else if(res>=85&&res<=200)
  59.                                 {
  60.                                 Remote_Rdy=1;
  61.                                 Remote_Cnt++;
  62.                                 break;
  63.                                 }
  64.                         else if(res>=50&&res<=85)RODATA=1;
  65.                         else if(res>=10&&res<=50)RODATA=0;
  66.                         if(OK)
  67.                                 {
  68.                                 Remote_Odr<<=1;
  69.                                 Remote_Odr+=RODATA;
  70.                                 Remote_Cnt=0;
  71.                                 }
  72.                         }
  73.         }
  74.         EXTI_ClearFlag(EXTI_Line10);
  75. }
  76. /********處理鍵盤*******************************/
  77. /********返回相應鍵值*******************************/
  78. u8 Remote_Process(void)
  79. {
  80.         u8 t1,t2;
  81.         t1=Remote_Odr>>8;
  82.         t2=Remote_Odr;
  83.         Remote_Rdy=0;
  84.         if(t1!=(u8)~t2)return 'N';
  85.          switch(t1)
  86.                                  {                                                           // 顯示遙控上的字符按鍵
  87.                             case 162: return 'M';  
  88.                                 case 98:  return 'U';  
  89.                                 case 226: return'B';   
  90.                                 case 34:  return'L';  
  91.                                 case 2:   return'O';   
  92.                                 case 194: return'R';  
  93.                                 case 224: return'*';   
  94.                                 case 168: return'D';   
  95.                             case 144: return'#';   
  96.                                 case 104: return 0;   
  97. ……………………

  98. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
SPWM - TIM8三相六路輸出.7z (244.89 KB, 下載次數: 96)


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

使用道具 舉報

沙發
ID:1 發表于 2020-6-18 15:11 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

無效樓層,該帖已經被刪除
無效樓層,該帖已經被刪除
5#
無效樓層,該帖已經被刪除
6#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产黄色精品 | 国产成人av一区二区三区 | www.日韩高清 | 亚洲精品成人免费 | 欧美精品一区二区免费 | 黄网站色大毛片 | 成人久久网 | 亚洲国产精品久久久久 | 欧美日韩在线一区二区 | 国产日韩欧美一区 | 久久久网 | 男女精品久久 | 欧美久操网| 91精品国产91久久久久久 | 在线国产一区 | 99久久免费精品国产免费高清 | 精品国产区 | 午夜精品视频一区 | 欧美日韩精品久久久免费观看 | 亚洲精品乱码久久久久久9色 | 精品久久国产 | 奇米影视在线 | 伊人久麻豆社区 | 久久躁日日躁aaaaxxxx | 九九亚洲精品 | 色吊丝2288sds中文字幕 | julia中文字幕久久一区二区 | 国产露脸国语对白在线 | 欧美在线观看一区二区 | 人人亚洲 | 日韩欧美精品 | 成人国产免费视频 | 亚洲成人福利在线观看 | 97av视频在线 | 亚洲免费在线视频 | 在线播放中文字幕 | 亚洲自拍一区在线观看 | 精品91久久 | 青青草社区 | 99精品在线观看 | 国产精品一区二区免费 |