STM32学习历程以及设备自检系统的编写

接到一个任务,使用STM32单片机,完成一个设计自检系统的设计,包括扯得温度,过流,过压这些信息,并使用RS232向上位机中传输数据,自己以前只做过51单片机,在研究生阶段主要做的是机械方面的公差以及深度学习,这里计划使用10天完成STM32的学习以及完成项目。

Day1

由于自PCB版是由单位自主研究的板子,不是传统意义上的用于学习的开发板,因此第一件事情就是理清楚整个开发的思路。由此总结了以下几个任务。

1、板子是谁设计的,能够保证一定能用吗?有没有原理图?
2、之前的开发版都是别人搭建好的,外围电路,现在我们只有一块芯片,怎么烧录程序,搭建环境?
4、在本项目中是写程序用RS232,上位机用RS485,还是一直用RS485或RS232,还是互相转换(我觉得是用J-link用SWD接法下载程序)
5、232芯片和485连在一起,为什么,有什么用途,485还要用USB转一下吗?
6、“功放设备通信协议”这个word中的内容是什么意思?
7、上位机是什么样的,还要我自己做吗?

观察上面几个问题发现,自己主要是对通信协议和上位机不太熟,以及刚接触STM32,不知道有Jlink这个东西。第六个问题是客户自定义了通信协议,是16进制数据包,要按照定好的协议,进行数据的发送。

Day2

今天主要找到了stm32的芯片,把引脚的分布好好看了一遍。然后开始搭建开发环境,把MDK等软件进行安装。在网上搜索,发现正点原子在STM32方面,做的比较优秀,然后跟着正点原子的视频进行学习,在晚上的时候利用JLINK的SWD方法,将程序下载进入了单片机中。

Day3

又到了喜闻乐见的点灯环节,在第三天中开始进行程序编写。主要思考了STM32与51单片机的区别。在STM32的程序编写主要有2种方式:
1、直接操控寄存器
2、利用库函数编写(库函数又分为2种,一种是标准库函数,另一种是hal库函数)

经过研究发现利用库函数编程,和我用Python编写神经网络一样,都是需要导入轮子,用到哪个,去查对应的API就行了。晚上的时候大概看了一下库函数的中文文档。

Day4

今天看了看网上的评价,说官方在大力推行hal库,于是我结合CubeMax将hal库作为主力,然后成功点亮了LED灯,通过对GPIO进行操作。
完成第一个程序后,开始从最熟悉的温度入手,以前在51上经常使用DS18B20。但是客户指定了温度传感器,必须要用ADC进行操作,于是学习的重点转变到ADC的学习上,然后观看正点原子的视频,在正点原子的例程上进行二次开发,仔细阅读了传感器的使用方法,成功实现了客户提供的温度传感器的使用。(在这个例子中,因为给的温度传感器是贴片式的没发操作,后来把杜邦线截掉,旱在贴片上进行试验。身为嵌入式的从业者,没有条件要学会创造条件

Day5

接下来就是重点了,串口的使用。仔细观看视频,学会串口的使用方法。利用串口助手将温度传感器的值进行输出。由于以前有51的基础,串口学的速度还算可以。

Day6

接下来是整个任务的难点所在,编写自定义协议,接收一串16进制的数据包,然后再进行处理,发出指定的16进制数据包。这一天把计算机的基础知识补了一下,字节的概念,16进制的计算,表达等。为了能够更好地理解这个串口数据的概念,开始学习上位机的知识,经过查资料,最后利用C#加Winform实现上位机。

Day7

开始学习C#,C#是一种面向对象的程序语言。由于本身有C语言的基础,所以学习C#也还可以。在编写的过程中对数据有了更深的理解,写出了一个简单的串口助手。

Day8

今天被卡了,由于正点原子的串口必须要以新行结束,我以为只用加0x0D,后来才发现是要0x0D,和0x0A一起加。正点原子的printf还挺好用,以后学会映射串口。下午又被一个卡了,一直在想怎么把十进制数,转化为16进制,后来发现直接位运算就行,不用转化为2进制,在程序眼中,10进制就是以2进制存储的,然后再拿16进制与,等于可以直接对16进制进行处理(还是自己的计算机基础不行,老卡在小地方,不是科班的坏处)

Day9

今天又出现了一个小问题,JLINK不亮了,又开始百度为什么JLINK会出现问题。原来是JLINK掉固件了,我又开始给JLINK刷固件,解决了这个问题。
解决完 JLINK后,开始研究485通讯以及232通讯,了解了USB转各种接口,以及232和485是怎么回事。

Day10

研究485通讯,由于485通讯是半双工,不能同时收发,要有一根专门的线控制。实现后,将学习板的程序进行移植,移植到自己做的板子上。至此项目内容已经完成。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值