写在前面
我将我的参赛代码已经在GitHub上进行了开源,欢迎大家下载
2020年全国大学生智能汽车竞赛浙江赛区二等奖开源代码 接下来我将就十六届智能车竞赛为各位同学分享我的4X4矩阵键盘+Flash调参系统思路,并且手把手教大家如何将我的开源代码加以利用,关于我的代码有什么不明白的都可以在评论区评论,博主看到了会第一时间回复的。 不过大家一定要注意,2021年的主控芯片跟2020年的不一样的,我用的主控芯片MK66FN2VLQ18,然后今年要求的芯片是 Infineon系列的单片机了。我的代码工程是用IAR8.25及以上版本才能正常打开,所以我推荐大家拿我的代码做为一个参考即可。
效果图
调参系统
一个好的调参系统可以让我们在调试时事半功倍,我这个调参系统主要由oled显示,4X4矩阵键盘输入,flash读、写数据组成,这些功能我都是写在func.c文件里面,希望读者认真钻研,领会其好处~
func.c文件
flash读写
这个文件里面存的就是我的调参相关代码,接下来做介绍 如果用不同的芯片的话,只要把
FLASH_WriteBuf(2, (uint8_t *)write_float, sizeof(write_float), 0);
这个函数进行替换就可以喽 其实具体的操作函数在买芯片的时候商家会提供的,同学们要做的就是按照我的思路逻辑,将商家给的flash读写函数组装起来就可以了 因为float类型的数据和uint32_t类型的数据在flash里面存储的方式不同,所以我分成了2个数组来存储参数。 read_flash_type
参数作用: 因为我使用的电磁车在新赛道上跑的时候需要做一个电感数值归一化处理,因此需要记录赛道电感数据的最大和最小值到flash里面,但是也不是每一次读取flash的时候都需要读取这个极值(在同一个赛道的时候就不用重新读取极值),因此需要这个变量来控制芯片在读取flash时,是否读取电感极值。 这一部分是读取flash里面存了uint32_t数据扇区的代码 这一部分是读取flash里面存了float数据扇区的代码
oled显示参数
因为我只用了一个无线串口,所以这个无线串口选择发的数据也是通过按键来选择的,标志位是last_send
键值处理
因为我的是4X4矩阵键盘所以有16个按键,这16个按键分别对应的是不同的功能,我就在这里写了个switch()语句来进行分辨,同时,我的母板上还有3个按键,也分别对应了不同的功能
键盘扫描函数
这个键盘扫描函数贼好用,不过只能用在4X4矩阵键盘上哦~ 每1ms调用一次扫描函数
(づ ̄3 ̄)づ╭❤~一键三连,这次一定(๑•̀ㅂ•́)و✧