ARM寄存器食用感受
ARM寄存器食用感受
最近研究NXP新推出的kinetis KV58微控制器,用的是NXP官方推出的MCUXpresso的SDK,研究后发现并没有想象的好用,故决定还是手撸寄存器好了.
MKV58F24.h首先需要关注这个头文件,该头文件中包含了KV58微控制器所有寄存器地址,是最重要的头文件.下面以GPIO为例,介绍一下撸寄存器的方法.操作每个模块主要可以分为3部分.
地址定义
寄存器结构体定义
操作掩码宏定义
此外,手册中还定义了其他内容,如中断向量表,DMA触发源表,编译器设置,版本信息等等.
地址定义1234567891011121314151617181920212223242526272829303132333435/*! * @} */ /* end of group GPIO_Register_Masks *//* GPIO - Peripheral instance base addresses *//** Peripheral GPIOA base address */#define GPIOA_BASE ...
蓝牙接收端帮助文档
新生杯智能车大赛蓝牙接收端帮助文档
写在前面
这个蓝牙接收端于蓝牙上位机配套使用,使用当蓝牙上位机发出指令后,接收程序能够分析上位机发送的信号,并且执行相关的函数
大体流程串口接收数据->将数据加入数据缓冲区->在while中一直判断缓冲区中的数据->如果有相关的指令->执行相关数据处理函数
添加源文件使用蓝牙接收端程序需要手动在工程中添加SerialPortImformation.c 和 SerialPortImformation.h 之后再include "SerialPortImformation.h"另外,因为需要使用串口,所以也需要添加串口USART相关的头文件
关于 SerialPortImformation.h123456789typedef struct{ int GoSpeed; int GoSpeedOld; int TurnSpeed; int TurnSpeedOld; uint8_t OtherInfo; unsigned char serialPortQueueBuffer[BUFFERSIZE+5]; ...
ARM weak指令巧用
利用weak指令实现只声明不定义函数直接调用不出错
近来为新生编写一个蓝牙助手的下位机,采用了类似于面向事件的编程方法吧,蓝牙消息来了就会触发事件函数,把那些复杂的判断都封装起来了,也是方便使用吧.但是有一个问题,事件函数是他们自己写,自己定义,我只是预先声明了,也调用了,但是没有定义.这样很明显是编译过不了的,而C语言又没有类似于C++虚函数一样的东西.利用ARM有的编译指令weak可以实现这个功能.
我的想法是如果使用者没有自己写事件函数,那么就执行我的报错函数,用串口输出报错信息,如果他们写了事件函数,那么就执行他们的事件函数.
而weak指令的定义为: __weak函数用于定义变量或者函数,常见于定义函数,在MDK ARM链接时优先链接定义为非weak的函数或变量,如果找不到则再链接weak函数。 正好符合我的要求.
以下是代码:
这是报错函数
12345678__weak void function1ButtonClickedEvent(){ printf("function1ButtonClicked\n"); printf(" ...
openwrt简单玩一玩
紧接着上一次试玩hiwifiOS系统,最后发现实在是不过瘾,限制太多,尤其是软件安装方面的限制,然后资料又少,受不了了,就还是刷成了正宗的OpenWrt系统.
OpenWrt版本简介刷OpenWrt之前先简单说明一下OpenWrt的版本问题吧.OpenWrt到目前为止已经有了很多个版本,目前最新的是15.05 Chaos Calmer 版本,也就是很多人口中说的CC版.另外,常见的还有Barrier Breaker 14.07也就是BB版,还有更古老一点的Attitude Adjustment 12.09也就是AA版,这些就是系统版本的区别,就跟windows7和Windows8这样的区别类似.另外,OpenWrt作为嵌入式操作系统,支持众多处理器,不同处理器架构也有不同版本.而为了在安装的时候就把常见的驱动安装进去,每个安装包都附带了驱动,所以导致不同的处理器有不同的版本.比如我这个就是使用的mt7620处理器的15.05 CC版本.而之前的hiwifiOS则是使用mt7620处理器的14.04BB版上修改而成的.除此之外,还有很多论坛上常说的openwrt PandoraBox ...
hiwifi的正确打开方式
hiwifi OS的正确打开方式
近来频繁需要下载大文件,可是无奈,校园网速度感人.想着能不能把我的路由器改造成一个下载器来下载呢.于是,就开始了我的折腾之路其实这个路由器高中就买了,当时作为家里的主力路由器,一直想折腾,不过也常常搞得网络不稳定,被家里人”投诉”了几次之后,也没有继续研究了.直到后来换了100M宽带,这个只有802.11n协议的路由器带不动了,退休下来,我才有机会仔细的研究一下
hiwifi是什么以下是百度百科的介绍:
HiWiFi是北京极科极客科技有限公司推出的一款基于国外开源代码OpenWrt的无线路由系列,全称是“极路由 HiWiFi”,简称“小极”“HiWiFi”。
我手上的这块是hiWiFi 1S-HC5661,极路由官方的第二款产品.采用联发科的MT7620A处理器,这个处理器基于mips架构,560MHz主频,不过正是因为是mips架构的原因,应用程序非常少,交叉编译环境搭建也没那么顺利(相比Qt安卓的交叉编译环境还是要好弄很多).128M的ddr2内存,16M闪存,外置16GB SD卡.软件方面,我目前使用的hiWiFi OS系统,不过看情况吧 ...
uper2018使用说明
718蓝牙助手使用说明
这篇文章主要介绍串口通信,用蓝牙实现串口通信,以及蓝牙助手的使用说明.
综述蓝牙串口基于串口通信,普通串口使用有线传输,而蓝牙串口只是用蓝牙代替了有线,来传输信号而已.单片机发送的串口信号发送到蓝牙串口模块上,然后蓝牙串口模块经过一些处理,将串口信号转化为蓝牙的传输信号使用蓝牙传输协议发送到手机上,手机上面的蓝牙,再将信号解析出来.虽然中间传输不是使用的串口传输的,但是利用蓝牙串口模块我们发送和接收却是使用的串口通信,所以我们可以忽略中间具体的传输过程.也就是说掌握了串口通信也就基本能够掌握蓝牙串口的使用了.
串口通信直接进入正题,什么是串口通信. 这一段是来自百度百科的说明: 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。同时我们之前提供的STM32资料中也有关于串口通信的说明参见说明文档中的stm32f10x系列usart模块这里我们也再简单说明一下什么是串口通信.串口通信听名字就是串起来通信,就是将数据按照一定时 ...
2017实验室经历总结
正式看之前还是放一个音乐吧,全文6000多字,废话又多,怕你们睡着了
2017年总结周子顺
时间很快,转眼间在718实验室也呆了一年了。在这一年里也经历了很多,也有很多话想对下一年的人说。这个总结我想分为几个方面。首先我想谈一谈我这一年的经历,其次我再想谈一谈刚来实验室的一些感受,然后我想再谈一谈关于参加 NXP 智能车赛和全国大学生电子设计竞赛等其他比赛的一些感想,我还想谈一谈在实验室的日常和实验室之外的一些事情,最后我还想谈一谈实验室的发展。
一年经历
首先说我的经历吧。我从小就对电子技术比较感兴趣,从小就喜欢拆卸研究各种电器,喜欢研究电脑的操作系统等。上大学前就自己修过手机屏幕和主板,制作过简单的红外遥控器,研究过Unity3D 做过游戏,学习过C++(面向过程的C++,相当于 C语言加上一些简单的 STL 算法库),搞过算法竞赛,也略微自学过 Java,研究过路由器搭建小型服务器等。还记得当时刚入学班助就向我推荐了一个“718 创新交流群“,我怀着试一试的心态加入了这个群,开启了我这大学的科创生活。之后就是参加了实验室的纳新提前批,提前批也就是3道程序题,由于之前的 ...
STM32培训
STM32从入门到精通
Hi~ 哈工大威海718联创培训营的小伙伴们你们好,这是我们进行stm32单片机培训的相关资料,包括完整的示例程序,帮助文档,课件, 以及单片机的 硬件资料,原理图 等等.我们还将在大家学习的过程中不断地更新资料.
版本更新说明
2017年10月15日 更新例程下载选项,以后无需手动选择下载器为STLink
2017年10月21日 修正了一个可能导致编译失败的问题,出现”core_cm3.o No such file”的小伙伴们可以更新试试
2017年10月22日 修正了SYSTICK定时器延时不正确的问题
资料下载
下载地址:https://codeload.github.com/ZzzzzzS/STM32Learing/zip/master
备用下载地址:https://github.com/ZzzzzzS/STM32Learing
一般来说直接下载即可,若下载失败可点击备用下载地址,手动选择下载zip包,如图所示
资料说明
文件夹名
说明
原理图
硬件资料,说明电路连接情况
例程
各个外设示例程序
课程资料
上课ppt ...
diansai2017上位机
电赛上位机2017全国大学生电子设计竞赛板球控制系统上位机
这是一个安卓版的蓝牙上位机,使用Qt on Android开发,原计划进入全国电赛总决赛时使用,可惜实力不够,没能进入全国总决赛.之后此上位机继续开发,供相关科技创新展示时控制板球系统使用.
项目地址https://github.com/ZzzzzzS/diansai2017Uper
功能简介
蓝牙SPP协议连接HC-05等蓝牙串口模块
蓝牙串口调试接收数据
按键控制板球上球的移动
手势控制球移动
调试界面手势控制
开发经历
利用上位机控制板球这个想法是在做电赛的初期就有了,在板球的控制程序里面一直保留有串口控制的相关代码,在最初的省电赛时我们组就展示了蓝牙控制板球,不过那时采用的是网上找的上位机控制软件.省赛结束就开始用Qt安卓开发上位机,准备在国电赛的时候能够使用自己开发的上位机.2.开发过程中遇到的第一个难点是串口数据的读取.原本认为安卓蓝牙和Windows平台上的一样,蓝牙连接后就会自动生成一个虚拟串口,使用QSerialport类即可读取.后来发现不是这样的,必须使用Qt的蓝牙类读取,蓝牙类配置蓝牙为SPP串口 ...