登录
首页 » Others » 基于STM32的安卓蓝牙遥控车程序源码(Keil MDK工程)

基于STM32的安卓蓝牙遥控车程序源码(Keil MDK工程)

于 2020-12-06 发布
0 160
下载积分: 1 下载次数: 2

代码说明:

基于STM32的安卓蓝牙遥控车程序源码(Keil MDK工程),此程序实现的智能遥控小车功能强大,代码风格清晰简洁,十分适合学习STM32的童鞋参考学习。包含以下模块1、UART通信模块2、蓝牙遥控软件Bluetooth RC,解码3、电机驱动模块4、超声波驱动模块5、点阵驱动模块6、LED灯,蜂鸣器驱动7、按键驱动

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 基于Simulink的OFDM完美系统仿真
    用Simulink 建立OFDM系统模型,最后得出了仿真系统的误码率及基带发送接收波形图。
    2021-05-06下载
    积分:1
  • 新版完整Visio图库
    从多个地方搜罗的Viso图标,含有51个文件,分别对应48个领域类别。(2005/2008年资源,酌情下载)
    2020-12-06下载
    积分:1
  • c#winform开发微信企业号推送各类消息
    c#winform开发微信企业号推送文本消息,图片,图文,视频,语音等消息
    2020-07-03下载
    积分:1
  • 《黑客攻防技术宝典-iOS实战篇》pdf以及随书源码
    《黑客攻防技术宝典-iOS实战篇》pdf以及随书源码
    2019-06-19下载
    积分:1
  • 混合蛙跳算法求解TSP
    混合蛙跳算法是一种新兴的优化算法,通过对TSP问题的求解,比较混合蛙跳算法与现存其他优化算法的优劣
    2020-11-30下载
    积分:1
  • 国科大_中科院算法分析与设计历年考试_陈玉福
    中科院算法分析与设计历年考试题_陈玉福 最近6年
    2020-11-30下载
    积分:1
  • 多功能电表软件系统设计
    电能表的软件系统包括程序数据结构模块、程序初始化与电表运行处理模块、事件分配查询管理处理模块及显示处理模块、通讯处理模块、电量处理模块、时间与时段管理处量模块、电表最大需量处理模块八大部分组成,各个部分都有其特殊的任务,在电表系统中完成它们相应的功能。●●●●程序数据结构部分●●●●●●●●●程序数据结构部分程序数据结构模块是对程序中的数据进行分析,合理的分配数据内存,定义程序涉及的变量。它是根据整个程序的算法来制定的,同时一个好的数据结构对整个程序的编写有非常重要的作用,因此根据电能表软件系列实现的功能及其算法制定合理的数据结构。电能表的数据结构包括两个部分:内存数据结构和数据结构与常量结构。●这个是与常量的数据结构,在显小与数据通讯都会使用这个结构●●●●●●●●●程序常量数据结构部分●●●●数据标示项数据标示表示的正反数据存放的格式数据值的长度数据在与的偏移量数据显示的符号通过此结构可以把所要显示、通讯的数据在或者在存放的位置长度以极标志等内睿取出供所需要的函数使用●●●●程序数据结构部分●●●●●●●●●合相有功功率合相有功瞬时功率电压有校值合电流有校值当前的线频率合功率因数合相电压与电流的夹角当前的电能此结构可以对的计量参数寄存器一次可以全读出,并同时也可以分别取出对应所需要的参数●●●●●●●●●程序初始化与电表运行处理●●●●程序初始化与电表运行处理●程序初始化与电表运行处理模块是对整个程序进行初始化,并对电表运行的六种状态进行转换。程序初始化包括两个部分:初始化和电表各部件初始化。初始化是对各部件进行初始化,为各部件在程序工作时提供合适的初始状态,它包括配置口工作模式、看门狗初始化、定时器初始化、键盘中断初始化、串口中断初始化、初始化等等。电表各部件初始化是对电能表系统各部件进行配置工作状态,初始化它们的工作方式,为程序工作提供电表部件初始状态,它包括指示灯初始化显示初始化、实时时钟初始化、电量恢复、通讯信道、历史电量处理等等部件的初始化。●●●●口工作模式●●●●●●●●●口工作模式如果有没有用到的口,作输入时要通过电阻与或者与连接,作输出时要输出置与置因为设备输入端未连接将会产生工作枚障,如果输入未连接,则由于噪音等原因可能会产生内部输入电平,从而导致故障。如果在上电时口为输入,但电池供电时口的电平为不确定状态时,也应对口作相应的处理●当主时钟切换到副时钟时,应将主时钟的口设为输出置看门狗初始化●●●●●●●●可选字节设定地址:080H/Ls0HrWINDOW1F工NDOWWDCSWDCS1WDCSLSROSC看门狗的开了NDCW1VINDOMO看门狗定封器窗口打开周期窗时间设定为1C5WDTCN看门狗定时器计数器的操作控制/非法汸问检测琹止计数器操怍复位后停止计数),禁止非法访问检测操作允许计数器橾作;愆位后始计敏),氘许非法访闻枱测橾作看门狗定时器HD,FDCS1HDCEO昋门狗定时器溢出吋间0z°/faL(3.88ms)时间间隔设置n/f!(7.76ms):25/土R(3L.03ms0CTL (62, OG sD0125fsL(124.12mE)fL(496.4LSROSC内部低速振蓠器操作看门狗设为不可由软件停1(出将1写入C寄存器的第0红 SESTOP)时停l操作不能停止(即使将1写入 SRSTOP位也不停止操作)能停止单片机内部的看门狗把设为不能停止时为硬看门狗,必须在窗口打开才能清狗否则单片机会复位,●●●●串口中断初始化●●●●●●●●●●由于多功能表有二个供通讯的口,一个供红外通讯口。但单片机只有二个哪么就需要模拟其中一个的分频时钟信号不能得到此时应选的分分频时钟信号模拟红外通讯,需要个外部中断(接收接收管上的电平信号并每要检测屮断口的信号),二个定时器(输出载波与的时间间隔)串口中断初始化有关UART0的寄存器波特率发生控制寄存器0( BRGCO)真出:F? iH Aher reset: 1Fh民WEymarBRGCOTPE01TP90O0 MDLO4MPLSMDLDe MDLoTBLOm(TPS01,TPS00)=(0,0)选择定时器TM50的输出作为TPSDTP500Base cock (IxeLKol selection"fPRs=2 MHz fFRE-5 MHz fFRs-B MHz1FFG-10MH基本时钟TM50 DutpfEgli1 H25 H4 HT5 MHz250kF2H25 kHz1 MH26H2625kH15625kH2250H3125k因为如果选择外围硬件时钟fprs作为基本时钟,那么就不可能产生出1200bps的波特率。MDLO4MDLOS MDLO2 MDLOT MDLOG k Selectian of 5-titcounterx Selng Erchbiled0acLM/B0(MDLO4, MDL03, MDLO2MDL01,ML00)=(0,1,1,0,1),k=13028 fruTa2a scLk/?31t/3
    2020-11-30下载
    积分:1
  • Java面试笔试大汇总(最全+详细答案)
    搜集的 Java面试笔试题,设置最低积分,备份加供诸位道兄下载,没积分的私我是的内部类,其代码如下所小简单的说,如果整型字面量的值在到之间,那么不会新的对象,而是直接引用常量池中的对象,所以上面的面试题中的结果是而的结果是提醒:越是貌似简单的面试题其中的玄机就越多,需要血试者有相当深厚的功力。和的区别答:运算符有两种用法:按位与;逻辑与ε运算符是短路与运算。逻辑与跟短路与的差别是非常巨人的,虽然二者都要求运算符左右两端的布尔值都是整个表达式的值才是之所以称为短路运算是因为,如果左边的表达式的值是右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用而不是,例如在验证用户登录时判定用户名不是而且不是空字符串,应当写为:二者的顺序不能交换,更不能用运算符,因为第一个条件如果不成立,根本不能进行字符串的比较,否则会产生异常。注意:逻辑或运算符()和短路或运算符()的差別也是如此。补充:如果你熟悉那你可能更能感受到短路运算的强大,想成为的高手就先从玩转短路运算开始吧3114解释内存中的栈堆和静态区的用法。答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过关键字和构造器创建的对象放在堆空间;程序中的字面量()如直接书写的和常量都是放在静杰区中。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。上面的语句中变量放在栈上,用创建出来的字符串对象放在堆上,而这个字面量放在静态区。补充:较新版本的(从的某个更新开始)中使用了一项叫逃逸分析的技术,可以将一些局部对象放在栈上以提升对象的操作性能等于多少?等于多少?答的返回值是的返回值是。四舍五入的原理是在参数上加然后进行下取整。是否能作用在上,是否能作用在上,是否能作用在上答:在以前,中只能是从开始中引入了枚举类型,也可以是类型,从开始,还可以是字符串(),但是长整型()在目前所有的版本中都是不可以的。、用最有效率的方法计算乘以?答:(左移位相当于乘以的次方,右移位相当于除以的次方)。补充:我们为编写的类重写方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择这个数?前两个问题的答案你可以自己百度一下,选择是因为可以用移位和减法运算来代替乘法,从而得到更好的性能。说到这里你可能凵经想到了:等价于左移位相当于乘以的次方再诚去自身就相当于乘以,现在的都能自动完成这个优化4/114、数组有没有方法?有没有方法?答:数组没有方法,有的属性。有方法中,获得字符串的长度是通过属性得到的,这一点容易和混淆。在中,如何跳出当前的多重嵌套循环?答:在最外层循环前加个标记如,然后用可以跳出多重循环。(中支持带标签的和语句,作用有点类似于和中的语句,但是就像要避免使用一样,应该避免使用带标签的和,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好)、构造器()是否可被重写()?答:构造器不能继承,因此不能被重写,但可以被重载。、两个对象值相同但却可有不同的这句话对不对答:不对,如果两个对象和满足,它们的哈希码(相同对于方法和方法是这样规定的:如果两个对象相同(方法返回,那么它们的值一定要相同:如果两个对象的它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了上述原则就么发在使用容器时,相同的对象可以出现在集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)补充:米于和方法,很多程序都知道,但很多人也就是仅仅知道而己,在的大作《》(很多软件公司,《《编程思想》以及《重构:改善既有代码质量》是程序员必看书籍,如果你还没看过,那就赶紧去亚马逊买一本吧)中是这样介绍方法的:首先方法必须满足自反性(必须返回)、对称性(返回时也必须返回)、传递性(和都返回时,也必须返回)和致性(当和引用的对象信息没有被修改时,多次调用应该得到同样的返回值),而且对于任何非值的引用,必须返回实现高质量的方法的诀窍包括:使用操作符检查参数是否为这个对象的引用;5114使用操作符检查参数是否为正确的类型;对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;编写完方法后,问自己它是否满足对称性、传递性、一致性;重写时总是要重写;不要将方法参数中的对象替换为其他的类型,在重写时不要忘掉注解。、是否可以继承类?答:类是类,不可以被继承。补充:继承本身就是一个错误的行为,对类型最好的重用方式是关联关系)和依赖关系()而不是继承关系()、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?答:是值传递。语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值訫是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。和中可以通过传引用或传输出参数来改变传入的参数的值。在中可以编写如下所示的代码,但是在中却做不到。说明:中没有传引用实在是非常的不方便,这点在中仍然没有得到改进,正是如此在编写的代码中才会出现大量的类(将需要通过方法调用修改的引用置类中,再将对象传入方法),这样的做法只会让代码变得臃肿,尤其是让从和转型为程序员的开发者无法容。和的区别?答:平台提供了两种类型的字符串和,它们可以储存和操作字符串。其中是只读字符串,也就意味着引用的字符串内容是不能被改变的。而类表小的字符串对象可以直接进行修改是中引入的,它和的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被修饰,因此它的效率也比要高。面试题什么情况下用运算符进行字符串连接比调用对象的方法连接字符串性能更好?如果是少量的字符串拼接,可以用,如果是大量的还是用吧是线程安全的是线程不安全的,很6114明显,的系统开销要大,所以如果我们只有个单线程,考虑速度的话更好。那为什么我们很少见到呢?原因很简单,因为我们有时候很难确定我们创建的系统会不会是多线程的,如果考虑到以后扩展的可能性,则更难确定,所以我们更愿意使用因为它是线程安全的,不用担心以后扩展。面试题请说出下面程序的输出。补充:解答上面的面试题需要清楚两点对象的方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与对象的结果是),如果常量池中没有对应的字符串,则该字符串将被添加到常量池中,然后返回常量池中字符串的引用;字符串的操作其本质是创建了对象进行操作,然后将拼接后的对象用方法处理成对象,这一点可以用命令获得文件对应的字节码指令就可以看出来。方法就是把该对象放进常量池。、重载()和重写()的区别。重载的方法能否根据返回类型进行区分?答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在了类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求面试题:华为的面试题中曾经问过这样一个问题为什么不能根据返回类型来区分重载,快说出你的答案吧!返回类型不同不构成重载,重载的机制是参数列表不同,即参数的类型,个数,排列顺序。、描述·下加载文件的原理机制?答中类的装载是由类加载器()和它的子类来实现的,中的类加载器是一个重要的运行时系统组件,它负责在运行时查找和装入类文件中的类。由于的跨平台性,经过编译的源程序并不是·个可执行程序,而是个或多个类文件。当程序需要使用某个类时,会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的文件中的数据读入到内存中,通常是创建一个字节数组读入文件,然后产生与所加载类对应的对象。加载完成后,对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证7114准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后对类进行初始化,包括:如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;如果类中存在初始化语句,就依次执行这些初始化语类的加载是由类加载器完成的,类加载器包括:根加载器()、扩展加载器)、系统加载器()和用户自定义类加载器(的子类)。从)开始,类加载过程采取了父亲委托机制()。更好的保证了平台的安全性,在该机制中自带的是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载不会向程序提供对的引用。下面是关于几个类加载器的说明:般用本地代码实现,负责加载基础核心类库();从系统属性所指定的目录中加载类库,它的父加载器是又叫应用类加载器,其父类是环境变量或者系统属性所指公应它是应用最广泛的关加载器。它从目录中记载类,是用户自定义加载器的默认父加载器。型变量中能不能存贮一个中文汉字,为什么?答:类型可以存储一个中文汉字,因为中使用的编码是不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个类型占个字节(比特),所以放一个中文是没问题的补充:使用意味着字符在内部和外部有不同的表现形式,在内部都是当这个字符被从内部转移到外部时(例如存入文件系统中),需要进行编码转换。所以中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流,和,这两个类是字节流和字符流之间的适配器类,承担了编码转换的任务;对于程序员来说,要完成这样的编码转换恐怕要依赖于(联合体共用体)共享内存的特征米实现了。、抽象类和接口()有什么异同?答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承」某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是默认的,而接口中的成员全都是的抽象类中可以定义成员变量,而接∏中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法、静态嵌套类和内部类()的不同?是被声明为静态)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如下所示。扑克类(一副扑克)骆昊黑桃红桃草花方块8114构造器洗牌(随机乱序)发牌发牌的位置下片类(一张扑克)内部类骆昊花色点数9114测试代码:汏牌发第一张牌对于非静态内部类只有通过其外部类对象才能创建对象红心自己创建一张牌洗牌后的第一张打印红心面试题下面的代码哪些地方公产生编译错误?注意中非静态内部类对象的创建要依赖其外部类对象,上面的面试题中和方法都是静态方法,静态方法中没有,也就是说没有所谓的外部类对象,因此无法创建内部类对象,如果要在静态方法中创建内部类对象,可以这样做:、中会存在内存泄漏吗,请简单描述答:理论上因为有垃圾回收机制()不会存在内存泄露问题(这也是被广泛使用于服务器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被回收,因此也会导致内存泄露的发生。例如的10/114
    2020-06-20下载
    积分:1
  • 绳钜
    【实例简介】绳钜程序
    2022-01-03 00:31:16下载
    积分:1
  • JT808 GPSServer终端模拟
    基于JT/T808 协议及数据格式的GPS终端模拟程序,符合交通部的例子,可以参考
    2020-12-05下载
    积分:1
  • 696518资源总数
  • 104349会员总数
  • 32今日下载