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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一一在线 | 国产不卡视频 | 第四色影音先锋 | 亚洲欧美综合 | 午夜欧美一区二区三区在线播放 | 日韩欧美二区 | 欧美一区二 | 精品久久久久香蕉网 | 妞干网视频 | 久久在线视频 | 一区二区三区在线观看免费视频 | 久产久精国产品 | 综合久| 99久久精品免费看国产四区 | 久久人 | 亚洲情侣视频 | 激情欧美一区二区三区中文字幕 | 91免费看片神器 | 久久成人免费视频 | 亚洲欧美日韩网站 | 爱爱视频日本 | 伊人二区| 日本高清视频在线播放 | 一区二区三区四区在线视频 | 在线国产视频 | 精品国产一二三区 | 日韩91在线 | 免费视频一区二区 | 亚洲一区二区在线播放 | 久久91精品国产一区二区 | 人人九九精 | 99精品免费久久久久久日本 | 蜜桃视频在线观看免费视频网站www | 综合色久 | 午夜国产精品视频 | 成人在线视频网站 | 2018国产大陆天天弄 | 天天干天天操 | 操操日 | 一区二区三区在线观看免费视频 | 国产成人精品一区二区三区四区 |