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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2136|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32紅外通信實(shí)驗(yàn)程序 實(shí)現(xiàn)最基本的紅外命令控制

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:555895 發(fā)表于 2021-1-17 16:41 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
PA0為紅外接收模塊信號口
能實(shí)現(xiàn)最基本的紅外命令控制
僅供參考
主函數(shù)
  1. uint8_t IrValue[4];         //設(shè)置一個4元素數(shù)組變量

  2. void delay_us(uint16_t time)     //粗略微秒延時函數(shù)
  3. {   
  4.    uint16_t i=0;  
  5.    while(time--)
  6.    {
  7.       i=10;  
  8.       while(i--) ;   
  9.    }
  10. }

  11. int main(void)                                                  //主函數(shù)
  12. {
  13.         
  14.         EXTI_Config();
  15.         GPIO_Config();
  16.                                 
  17.         while(1)
  18.         {               
  19.                 if(IrValue[2] == 0x46)  //紅外按鍵鍵值
  20.                 {
  21.                         GPIO_SetBits(GPIOB,GPIO_Pin_0);
  22.                 }                        
  23.                 else
  24.                 {
  25.                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  26.                 }
  27.         }               
  28.                
  29. }
復(fù)制代碼
中斷服務(wù)函數(shù)
  1. void EXTI0_IRQHandler(void)//中斷服務(wù)函數(shù)
  2. {
  3.         if(EXTI_GetITStatus(EXTI_Line0) == 1)
  4.         {
  5.                 uint16_t i,j;
  6.                 uint16_t Time=0;
  7.                                 
  8.                
  9.                 delay_us(5000);        //延時5ms
  10.                
  11.                 if(DO==1)               //確定不是外界干擾,DO為紅外模塊OUT口連接的引腳PA0
  12.                 {
  13.                         return;
  14.                 }               
  15.                 while(!DO);   //跳過9ms
  16.                 while(DO);    //跳過4.5ms
  17.                
  18.                 for(j=0;j<4;j++)
  19.                 {
  20.                         for(i=0;i<8;i++)
  21.                         {
  22.                                 while(!DO);
  23.                                 while(DO)
  24.                                 {
  25.                                         delay_us(100);
  26.                                         Time++;
  27.                                         if(Time>30)
  28.                                         {
  29.                                                 return;
  30.                                         }                                       
  31.                                 }
  32.                                 IrValue[j] = IrValue[j] >>1;
  33.                                 if(Time>=10)
  34.                                 {
  35.                                                 IrValue[j] |= 0x80;
  36.                                 }                                
  37.                                 Time=0;
  38.                         }
  39.                 }                                                        
  40.         }
  41.         EXTI_ClearITPendingBit(EXTI_Line0);
  42. }
復(fù)制代碼
中斷配置函數(shù)
  1. void EXTI_Config(void)              //中斷初始化配置函數(shù)
  2. {
  3.         GPIO_InitTypeDef  GPIO_InitStruct;//GPIO結(jié)構(gòu)體變量
  4.         EXTI_InitTypeDef  EXTI_InitStruct;//EXTI結(jié)構(gòu)體變量
  5.         NVIC_InitTypeDef  NVIC_InitStruct;//NVIC結(jié)構(gòu)體變量
  6.         
  7.         //NVIC初始化配置
  8.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  9.         NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
  10.         NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
  11.         NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
  12.         NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
  13.         NVIC_Init(&NVIC_InitStruct);
  14.         
  15.         //GPIO初始化配置
  16.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  17.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
  18.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  19.         GPIO_Init(GPIOA,&GPIO_InitStruct);        
  20.         
  21.         //EXTI初始化配置
  22.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  23.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
  24.         EXTI_InitStruct.EXTI_Line = EXTI_Line0;
  25.         EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
  26.         EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
  27.         EXTI_InitStruct.EXTI_LineCmd = ENABLE;
  28.         EXTI_Init(&EXTI_InitStruct);
  29. }
復(fù)制代碼

全部資料51hei下載地址:
IR.7z (175.27 KB, 下載次數(shù): 32)

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲天堂偷拍 | 色婷婷亚洲 | www.日日夜夜| 亚洲精品在线观看视频 | 精品视频久久 | 毛片视频免费 | 精品一区久久 | 欧美日韩一区二 | 美女久久久久 | 国产精品一二三 | av噜噜噜 | 黄色三级av| 欧美在线视频播放 | 精品一区二区三区三区 | 三级在线免费观看 | 五月天激情婷婷 | 深夜福利网站 | 秋霞国产 | 成人免费黄色片 | 色av综合 | 久久久久国产精品夜夜夜夜夜 | 精品一区二区视频 | 成人三级在线观看 | 日韩精品视频在线免费观看 | 久草福利在线 | 97免费在线视频 | 五月网站 | 91精品国产成人观看 | 又色又爽又黄18网站 | 91国产丝袜在线播放 | 中文字幕视频 | 免费观看一级一片 | 福利一区福利二区 | 国产免费久久 | 中文字幕在线免费观看视频 | 欧美一级做性受免费大片免费 | 日本aaaa | 久久免费视频网站 | 日韩视频一区二区 | 一级片av | 999成人网|