历史上的今天
返回首页

历史上的今天

今天是:2025年06月29日(星期日)

2019年06月29日 | 基于STM32F103的红外遥控小车

2019-06-29 来源:eefocus

#include "remote.h"

#include "stm32f10x.h"

#include "delay.h" 

#include "usart.h" //ºìÍâÒ£¿Ø³õʼ»¯

//³õʼ»¯IO¿ÚÅäÖÃÒÔ¼°¶¨Ê±Æ÷5ÊäÈë²¶»ñ

void Remote_Init(void)       

    {   

      

 GPIO_InitTypeDef GPIO_InitStructure;  

        NVIC_InitTypeDef NVIC_InitStructure;  

        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  

        TIM_ICInitTypeDef  TIM_ICInitStructure;      

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //?? PORTB ??  

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); //TIM5 

 

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;           //PA1 ??    

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;   //????   

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

        GPIO_Init(GPIOA, &GPIO_InitStructure); 

        GPIO_SetBits(GPIOA,GPIO_Pin_1); //??? GPIOA1          

        TIM_TimeBaseStructure.TIM_Period = 10000; //?????????? ?? 10ms ??  

        TIM_TimeBaseStructure.TIM_Prescaler =(72-1); //???? 1M ?????,1us ? 1.  

        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //?????? 

        TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //?????????? TIMx 

 

    TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;  // IC2 ??? TI5 ?   

        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //?????   

        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;   

        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;  //??????,???   

        TIM_ICInitStructure.TIM_ICFilter = 0x03; //IC4F=0011 ??????? 8 ??????????   

        TIM_ICInit(TIM5, &TIM_ICInitStructure);//???????????? 

 

     

        NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;  //TIM5 ?? 

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //????? 0 ? 

        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //???? 3 ? 

        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ ????? 

        NVIC_Init(&NVIC_InitStructure);  //????? NVIC ???  

        

            TIM_Cmd(TIM5,ENABLE );  //????? 5    

                TIM_ITConfig( TIM5,TIM_IT_Update|TIM_IT_CC2,ENABLE); //ÔÊÐí¸üÐÂÖжϣ¬,ÔÊÐíCC2IE²¶»ñÖжÏ

            

        }

    u8  RmtSta=0;     

                u16 Dval;  //ϽµÑØÊ±¼ÆÊýÆ÷µÄÖµ

                u32 RmtRec=0; //ºìÍâÒ£¿Ø½ÓÊÕµ½µÄÊý¾Ý      

                u8  RmtCnt=0; //°´¼ü°´ÏµĴÎÊý  

                void TIM5_IRQHandler(void) 

                    {           

                        if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)  

                            {  

                                if(RmtSta&0x80)//??????????  

                                {     RmtSta&=~0X10;  //????????????    

                                    if((RmtSta&0X0F)==0X00)RmtSta|=1<<6; //?????????????????  

                                    if((RmtSta&0X0F)<14)RmtSta++;  

                                    else  

                                        {    

                                        RmtSta&=~(1<<7);//??????    

                                        RmtSta&=0XF0; //?????   

                                        }            

                              }           

                          }   

                            if(TIM_GetITStatus(TIM5,TIM_IT_CC2)!=RESET) 

                                {      if(RDATA)//?????  

                                    { 

 

                        TIM_OC2PolarityConfig(TIM5,TIM_ICPolarity_Falling); //?????    

                                        TIM_SetCounter(TIM5,0);     //??????  

                                        RmtSta|=0X10;      

                                    }

                                        else //?????   

                                            {        

                                                Dval=TIM_GetCapture2(TIM5);//?? CCR1 ???? CC1IF ??? 

         TIM_OC2PolarityConfig(TIM5,TIM_ICPolarity_Rising); //ÉÏÉýÑØ²¶»ñ

                                                

                                                      if(RmtSta&0X10)     //?????????  

                                                                {     

                                                                    if(RmtSta&0X80)//???????    

                                                                        {         

                                                                            if(Dval>300&&Dval<800)   //560 ????,560us  

                                                                                {       RmtRec<<=1; //????.    

                                                                                    RmtRec|=0; //??? 0     

推荐阅读

史海拾趣

FDI [Future Designs , Inc.]公司的发展小趣事

作为一家有社会责任感的企业,FDI公司始终关注社会公益事业。公司积极参与扶贫、教育、环保等领域的公益活动,为社会做出了积极贡献。同时,FDI还设立了奖学金和助学金,鼓励和支持年轻人投身电子科技事业。这些举措不仅提升了公司的社会形象,也为其赢得了广泛的赞誉。

ETL semiconductor公司的发展小趣事

英特尔(Intel)的成立与发展与微处理器的发明密不可分。在20世纪70年代初,英特尔的工程师们开始研发一种能够将计算机的中央处理器(CPU)集成到单一芯片上的技术。经过数年的努力,他们成功推出了世界上第一款微处理器——Intel 4004。这一创新不仅改变了计算机行业,也为英特尔的崛起奠定了坚实基础。

Hirosugi-Keiki公司的发展小趣事

三星(Samsung)原本是一家以家电和电子产品为主的综合性企业。然而,在半导体行业快速发展的背景下,三星决定加大在半导体领域的投入。经过数十年的努力,三星不仅在存储芯片领域取得了显著成就,还在逻辑芯片和代工业务方面取得了重要进展。如今,三星已成为全球领先的半导体企业之一。

高通(GENITOP)公司的发展小趣事

随着全球市场的不断拓展,超霸电池的销售网络遍布亚洲、欧洲和北美等多个国家和地区。公司始终坚持绿色环保的生产理念,研发出无汞无镉的电池产品,可随生活垃圾丢弃而不会对环境造成影响。此外,超霸电池还积极参与环保事业,旗下多家工厂获得了UL美国安全试验所废弃物零填埋认证。这些举措不仅彰显了超霸电池的社会责任感,也为其在国际市场上树立了良好的品牌形象。

DETCO公司的发展小趣事

为了进一步拓展全球市场,ElectronicsCorp制定了国际化战略。公司先后在北美、欧洲和南美等地设立了研发中心和生产基地。这些海外机构不仅为ElectronicsCorp提供了更广阔的市场空间,还使其能够更深入地了解不同地区的消费者需求和文化背景。通过本土化战略的实施,ElectronicsCorp逐渐在海外市场取得了成功。

Daco Semiconductor Co Ltd公司的发展小趣事

Daco深知人才是企业发展的核心动力。因此,公司一直注重人才培养和团队建设。Daco为员工提供了良好的工作环境和发展机会,鼓励员工不断学习和创新。同时,公司也建立了完善的激励机制和福利制度,确保员工能够全身心地投入到工作中。这种注重人才培养和团队建设的做法,使得Daco能够吸引和留住一批优秀的员工,为公司的持续发展提供了有力的保障。

问答坊 | AI 解惑

广西机电学院09年初试题

本帖最后由 paulhyde 于 2014-9-15 09:21 编辑 广西机电学院09年初试题 传个串口通信的资料大家 [ 本帖最后由 mikelode 于 2009-7-18 22:38 编辑 ]  …

查看全部问答>

夏宇闻著作《从算法设计到硬线逻辑的实现》

本帖最后由 paulhyde 于 2014-9-15 09:28 编辑 夏宇闻著作《从算法设计到硬线逻辑的实现》,欢迎大家下载。  …

查看全部问答>

哥们10年前的笔记(关于维修VCD机的)

昨天修好了公司里闲置的一台扫描仪,扫了一些文件.顺便把我自己10年前的一些笔记扫了出来.是关于维 修VCD机的,要知道10年前,VCD机也算是高级电子产品了,着实的火了一把.但是它要是坏了,怎么修呢?现在 估计没人修了吧?当年的笔记当作现代文物.谁愿 ...…

查看全部问答>

跪求 基于fpga数字秒表毕业设计

基于fpga数字秒表毕业设计  老师急着要,各位高手帮帮忙,小弟感激不尽!!…

查看全部问答>

疑问,基于TQ2440 BSP的3X7矩阵键盘实例

基于TQ2440 BSP的3X7矩阵键盘实例 EINTDriver_3X7KB.cpp 请访问: http://blog.mcuol.com/User/iwillbeback008/Article/38507_1.htm 但是里头有些疑问: 像手机那键盘,数字0的左边和右边的那个*号键和#号键,他们两的虚拟码(VK_)你知 ...…

查看全部问答>

AVR从POWER-DOWN模式苏醒后,该如何编程

ATMEGA8,手册上说,要经过16K个 CLK,请问,这是SLEEP苏醒后自动右芯片完成,我们不需要加延时,还是需要在SLEEP语句后加延时16K CLK…

查看全部问答>

ce软键盘问题

我用evc4.0写了一个软键盘程序,是基于对话框的,单击按钮模拟按键消息keybd_event,在模拟器上调试一切正常,可拿到2440板子上一试问题就出现了,我的程序A需要输入,可点击软键盘,模拟字符输出a-z,正常应该是两个keydown和keyup,可程序A只接收 ...…

查看全部问答>

各位,请教一个问题,内存数据总线宽度(16/32)对CE有影响吗?非常感谢您!!

我有同样的两块开发板,所有硬件除了内存以外都相同。两块板子的内存大小都是64M,唯一的区别是内存数据总线宽度,一块是32bit的,一块是16bit的。    但是很奇怪,根据硬件的不同,无非是在bootloader中将内存控制器中相应寄存器更改。 ...…

查看全部问答>

感觉ISP下载程序后还要把boot0置为低电平才能运行程序,太麻

                                 如题,想要加密程序,用ISP直接勾选很方便,但是要静如ISP模式要把Boot0设为低电平,下载完成后又要设为高电平程序 ...…

查看全部问答>

如何用单片机控制一个振动棒?毕业设计要用

89S52 不知道震动的需要什么样的电机…

查看全部问答>