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

標題: STM32紅外通信實驗程序 實現最基本的紅外命令控制 [打印本頁]

作者: wjm12306    時間: 2021-1-17 16:41
標題: STM32紅外通信實驗程序 實現最基本的紅外命令控制
PA0為紅外接收模塊信號口
能實現最基本的紅外命令控制
僅供參考
主函數
  1. uint8_t IrValue[4];         //設置一個4元素數組變量

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

  11. int main(void)                                                  //主函數
  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. }
復制代碼
中斷服務函數
  1. void EXTI0_IRQHandler(void)//中斷服務函數
  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. }
復制代碼
中斷配置函數
  1. void EXTI_Config(void)              //中斷初始化配置函數
  2. {
  3.         GPIO_InitTypeDef  GPIO_InitStruct;//GPIO結構體變量
  4.         EXTI_InitTypeDef  EXTI_InitStruct;//EXTI結構體變量
  5.         NVIC_InitTypeDef  NVIC_InitStruct;//NVIC結構體變量
  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. }
復制代碼

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






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国精产品一区二区三区 | 久久国产精品网站 | 毛片免费看 | 精品一区av | 国产无人区一区二区三区 | 天堂视频中文在线 | 中文字幕人成乱码在线观看 | 久久无毛 | 国产成人免费视频网站视频社区 | 一区在线观看 | 9porny九色视频自拍 | 成人精品视频 | 福利视频三区 | 中文字幕亚洲视频 | 国产成人免费视频 | 亚洲一区中文字幕 | 国产一区二区久久 | 欧美高清性xxxxhd | 综合久久一区 | 中文字幕日韩专区 | 在线国产中文字幕 | 国产精品久久久久久中文字 | 在线一区观看 | 这里精品| 亚洲aⅴ精品 | 一本色道精品久久一区二区三区 | 无码日韩精品一区二区免费 | 午夜在线影院 | 亚洲精品美女在线观看 | 久久综合久久久 | 国产精品99 | 99久久亚洲| 欧美成人精品欧美一级 | 亚洲视频手机在线 | 四虎伊人 | 中文字幕一区二区三区在线乱码 | 午夜精品一区二区三区在线视频 | 91精品中文字幕一区二区三区 | 一级免费在线视频 | 91久久久久久久久久久 | 三极网站 |