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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3768|回復(fù): 0
收起左側(cè)

基于stm32f103c8t6學(xué)習(xí)型紅外遙控器程序

[復(fù)制鏈接]
ID:846373 發(fā)表于 2020-12-21 11:39 | 顯示全部樓層 |閱讀模式
#include "stm32f10x.h"
#include "bit_band.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "timer.h"
#include "infrared.h"
#include "SysTick.h"


u16 TIM2_IT_Update_Cnt = 0 ;                // TIM2的溢出次數(shù),用于LED1的閃爍計(jì)時(shí)

int main(void)
{
        u16        user_code_16bit = 0x1234;        // 初始化16位用戶(hù)碼
        
        u8 data_code_8bit = 0x66 ;                // 初始化8位數(shù)據(jù)碼
        
        u8 F_key_down = 0 ;                                // 按鍵按下標(biāo)志位
        
        
        // 注:程序中使用中斷時(shí),NVIC分組設(shè)置應(yīng)盡量位于程序起始處,并且在設(shè)置后盡量不要再更改NVIC分組

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //NVIC分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
        
  delay_Init();                                // 延時(shí)初始化(注:調(diào)用延時(shí)函數(shù)之前,必須先調(diào)用delay_Init()將SysTick初始化)
        
        LED_Init_JX() ;                                // 初始化LED硬件接口        
        
        KEY_Init_JX() ;                                // 初始化按鍵的硬件配置
        
        TIM2_Time_Init();                        // 初始化定時(shí)器2:1ms中斷一次

        Infrared_IE_Init_JX();                // 初始化紅外發(fā)射管腳:Infrared_IE = PB9
        
        Infrared_IR_Init_JX();                // 初始化紅外接收管腳:Infrared_REMOTE_IN = PB8
        
        
        NEC_IE_code_message(user_code_16bit,data_code_8bit);        // 上電發(fā)送:用戶(hù)碼0x1234 + 數(shù)據(jù)碼0x66
        
        
        while(1)
        {        
                // 判斷是否接收到有效的NEC紅外信息
                if(Current_bit_CNT>=34)
                {
                        // 解碼NEC格式紅外信息
                        if( ! NEC_IR_decode_message() )
                        {
                                // 判斷數(shù)據(jù)碼和數(shù)據(jù)碼反碼是否相反
                                if( Receive_data_code_8bit == (u8)(~Receive_data_code_opposite) )
                                {
                                        // 避免重復(fù)保存
                                        if( user_code_16bit!=Receive_user_code_16bit || data_code_8bit!=Receive_data_code_8bit )
                                        {
                                                user_code_16bit = Receive_user_code_16bit;        // 保存用戶(hù)碼
                                       
                                                data_code_8bit  = Receive_data_code_8bit ;        // 保存數(shù)據(jù)碼
                                                                                                
                                                PB_out(5) = 0;        // LED0亮一下,表示將紅外碼接收
                                                delay_ms(200);
                                                PB_out(5) = 1;
                                        }
                                }
                        }
                }
               
                // 按鍵發(fā)碼
                KEY_Scan_delay_JX();        // 掃描按鍵是否按下
               
                if( S_KEY_down == 0x04 )
                {
                        if( F_key_down == 0 )
                        {
                                F_key_down = 1;        // 長(zhǎng)按只有效一次
                                
                                NEC_IE_code_message(user_code_16bit,data_code_8bit);        // 紅外發(fā)送:用戶(hù)碼 + 數(shù)據(jù)碼
                                
                                
                        }
                }
               
                else F_key_down = 0;
               
        }        
        
}


// TIM2中斷:20ms更新中斷一次
void TIM2_IRQHandler(void)                                                                           //TIM2中斷
{
        if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)                  //判斷是否為T(mén)IM2的更新中斷
        {
                TIM_ClearITPendingBit(TIM2, TIM_IT_Update );                          //清除TIM2更新中斷標(biāo)志
               
               
                // 當(dāng)接收到一個(gè)下降沿后,下一個(gè)下降沿須在20ms內(nèi)被接收到,否則此次紅外接收認(rèn)為是出錯(cuò)的
                Current_bit_CNT = 0;        // 將當(dāng)前紅外接收的位數(shù)清0
               
                TIM2_IT_Update_Cnt ++ ;
               
                if( TIM2_IT_Update_Cnt >= 25 )                // LED1閃爍速率:1s
                {
                        TIM2_IT_Update_Cnt = 0 ;
                        
                        
                        PA_out(5) = !PA_out(5);                // LED1閃爍
                }
        }
}
//紅外接收管腳PB8的下降沿中斷函數(shù)
void EXTI0_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line0) != RESET)         // 判斷是否為中斷線0的中斷
        {
                EXTI_ClearITPendingBit(EXTI_Line0);     // 清除中斷標(biāo)志位
                                
                Each_bit_duration[Current_bit_CNT] = TIM2->CNT;        // 將此下降沿的TIM2計(jì)數(shù)存入Each_bit_duration[x]中
               
                Current_bit_CNT ++ ;        // 將當(dāng)前紅外接收的位數(shù)+1
               
               
                // 1、方便下一個(gè)下降沿的計(jì)時(shí)
                // 2、等待下一個(gè)下降沿20ms
                TIM2->CNT=0;                        // 紅外接收管腳接收到一個(gè)下降沿后,將TIM2計(jì)數(shù)器清0
        }         
}


stm32f103c8t6標(biāo)準(zhǔn)庫(kù).7z

465.37 KB, 下載次數(shù): 84, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人免费观看 | 欧美日韩中文字幕在线观看 | 国产精品久久久久久久久久久久午夜片 | 天天操操操 | 国产成人亚洲精品自产在线 | 师生出轨h灌满了1v1 | 亚洲视频免费在线观看 | 亚洲精品一区二三区不卡 | 国产精品国产三级国产 | 四虎黄色网址 | 亚洲黄色小视频 | 黄色小说视频网站 | 日韩五十路 | 亚洲视频免费看 | 欧美成人三级在线观看 | 久热精品视频在线观看 | 黄色片毛片 | 欧美一级特黄aa大片 | 四虎地址| 亚洲黄色大片 | 成人国产一区 | 亚洲色网址| 男男成人高潮片免费网站 | 日韩中文字幕视频 | 精品一区国产 | 欧美一级精品 | 国产高清网站 | 三级在线播放 | 野外(巨肉高h) | www.色中色 | 性史性dvd影片农村毛片 | 亚洲国产成人精品女人 | 久久久久久中文字幕 | 精品日韩在线 | 国产精品无 | 综合久久久 | 99视频免费在线观看 | 在线一区视频 | 天天干天天操天天爽 | 国产欧美日韩在线观看 | 国产精品久久久久久久久久久久午夜片 |