一些对软件的个性化设置 链接到标题
与vscode的联动 链接到标题
笔者的vscode有内联ai,又怎么肯在$\mu$Vision中老实跟着他打代码呢,但是在编译的时候又需要借助工程,于是参考某博客,在设置中添加了自动reload外部编译器修改的设置。
繁琐步骤的精简 链接到标题
江协貌似每一次都要在软件里删,实际里删,然后再实际中添加,再在软件中添加。我觉得直接覆盖一遍的效果与这四部的效果是一样的
前期代码移植 链接到标题
移植的OLED与LED都是属于hardware。
OLED 链接到标题
根据视频指引,添加了更强的OLED支持工具,可以输出一些中文字符、浮点数等,
LED 链接到标题
需要修改一些名称,按照视频操作,可以归纳为以下几个点
- 修改
LED.c
文件里面的定义,将LED1全部改成LED,接口改Pin_13,删去所有关于LED2的函数 - 将
LED.h
文件中的LED1与LED2作相应的修改(换名与删除) - 在主文件
main.c
中编写测试代码, - 运行,拷入,没有问题证明移植成功。
按键key 链接到标题
移植定时器(从而实现非阻塞式) 链接到标题
- 在system中移植定时器
- 修改TIM2为TIM1(因为TIM2另有用途)
注意这里后面改TIM1,但是前面改PB1为PB2
- 对于高级定时器TIM2_IRQn需要查阅其定义使用更新型定时器移植过来(具体原理不懂)
- 下面的测试函数则需要在Start中找结果
- 测试,在main.c函数中同理编写即可
key 链接到标题
- 首先需要改pin,这里根据他的解释我终于知道改数字的依据是什么了:见视频17:30时候对引脚电路的描述,本质上是为了引脚之间关系要对得上,比如K1与K2按键对应的事stm32的pin10和pin11,因此就要将阿健进行相应的修改。
- 完成所有修改之后就可以进行测试了,编写一个简单的if语句即可。
旋钮 链接到标题
这一个步骤需要用到模数转换,因此将stm32教程的模数转换部分移植过来,(之后更名为RP)
在这里我有点清楚hardware和system的区别了,hardware都是外接的设备,比如按键、旋钮、LED等,而system应该是已有设备实现的一些功能,比如计数器。
- 第一步还是将.c和.h文件移植过来
更改.c文件 链接到标题
- 查看引脚关系,并且这里使用ADC2来实现,而将精度更搞的ADC1留给角度传感器。
- 通过if的选择语句判断出按的事哪一个旋钮。
更改.h文件的头 链接到标题
将名称改改就行,包括RP、n
在main中写测试程序 链接到标题
初始化之后print出位置即可,这里根据弹幕解释一下4095的由来:$2^{12}=4096$,所以实际上这代表stm32的ADC分辨率为12位。
直流电机 链接到标题
首先这里的供电有变化,无需杜邦线给stm32额外供电,直接用适配器供电即可
查看引脚原理图 链接到标题
首先还是看引脚定义表(具体看视频28:30),这部分可能有一点复杂,做一个分类:
- PWM
- 由stm32上的A0控制,
- motor
- 相当于驱动部分了,是AIN1与2
修改PWM文件 链接到标题
- 改按键(pin0)
- 根据复用改通道3为1
- 记得也要改.h
修改motor文件 链接到标题
- 改按键(pin12和13)
- A与B的改法(实际上这个A与B的区别好像也只是一个区分,看具体原件引脚即可)
- 改速度函数,防止误导(只是一个编程习惯)
- 记得也要改.h
main.c的测试 链接到标题
- 需要使用直接测试按键的代码
- 删除i,j等测试变量,添加PWM变量(发出的控制指令)
- 设置PWM的调整关系,由于设置加速、减速以及复位,所以K4可以不需要
- 然后需要使用motor的内置函数将PWM传递给电机。
- 测试 (这里笔者出bug了,因为直接改得不细心导致的,与main.c内容无关,因此需要仔细阅读出错日志)
- 如果想要调整方向有多种方法
- 调整set和reset
- 引脚也可以换
- ……
在完成上面的测试的时候笔者又重新拷贝了一下官方自带的测试程序,进行了各种测试,都没有问题。
电机编码器(测量速度和位置) 链接到标题
- 查看网络编号等,发现并不用更改,然后直接编写程序测试就行,这里需要用一个if以及count变量实现分频功能
- 最后还给了一个关于测速原理的演示(没完全看懂)
串口 链接到标题
- 查看原理图,发现也不用改。
- 编写程序,使用旋钮作为要发送的数据,因此借用了一下旋钮的数据发送,
- 使用配套教程提供的串口工具以及串口U盘接收数据,
- 先使用一个简单的测试是否能接收到数据,
- 在确认无误后使用能可视化画图的软件(也在serial串口工具里面)
- 串口助手
- port:关于接收数据的一些配置,包括是否需要校验位等
- data format:二进制(HEX)还是ASCII(文本模式),以及自动分析(比如设置逗号分割)