基于STM32F103模拟时钟开发过程
可设置时间、整点报时的模拟时钟(精确到分钟即可),整点的时候可以通过板上的蜂鸣器以声音报时;转动板子,LCD屏上的时钟自动跟着旋转,这要用到板上的姿态传感器来感测。
标签
嵌入式系统
STM32
MPU
显示
海雾拂晓
更新2021-03-03
1013

基于STM32F103模拟时钟开发过程

      1.前期学习:及芯片分析图和芯片的基础学习

今年寒假跟着硬禾学堂参加了一款stm32的项目学习,初期板子发货比较慢就先向学校老师求教去看了些野火的视频,了解关于stm32的一些基本知识和相关的硬件资源情况,在对于项目使用的芯片有了一定的了解之后,选定了项目五stm32f103的功能1关于模拟时钟的设计开发过程,在芯片到货之后对其完成了初步组装,结合原理图对于芯片进行初步的了解和同项目同学交流对于芯片的分析图如下:

芯片正面

FsMnNwKlGaE2ksw4KOESioqgLL82

芯片反面

Fi4NnVrzw683izVQ2_1YQbPo9ofh

关于其配置为中等容量增强型,32位基于ARM核心的带64或128K字节闪存的微控制器USB、CAN、7个定时器、2个ADC、9个通信接口。

关于其STM32时钟、复位和电源管理如下:2.0~3.6伏供电和/O引脚
上电/断电复位(POR/PDR)、可编程电压监测器(PVD)使用4~16MHz晶体振荡器
内嵌经出厂调校的8MHz的RC振荡器
内嵌带校准的40kHz的RC振荡器
产生CPU时钟的PLL
带校准功能的32kHz RTC振荡器

    2.项目实现目标

在对于芯片资源有一定的了解之后,在根据项目发布的功能一:可设置时间、整点报时的模拟时钟(精确到分钟即可),整点的时候可以通过板上的蜂鸣器以声音报时;转动板子,LCD屏上的时钟自动跟着旋转,这要用到板上的姿态传感器来感测为目标来进行相关的设计

  1. 项目实现过程中使用到的软件工具:STM32CubeMX和Keil uVision 5

通过学习野火视频了解到可以通过STM32CubeMX配置各IO引脚,外设驱动,LCD驱动引脚,按键驱动,IIC驱动,RTC驱动,以及单片机内部时钟配置等生成项目工程,接着可以借助Keil uVision 5进行代码编写和编译,在做之前看到很多别的同学还会去用别的烧录工具,其实可以直接通过Keil uVision 5进行程序的烧写,但是需要去装相关驱动,在Keil uVision 5使用过程中发现会出现pack包安装不健全的问题,明白将软件安装配置完成是非常重要的,就像是战场中士兵的武器一样,发现问题解决问题这个过程意义非凡。

  1. 项目的STM32CubeMX使用

     pinout引脚配置图

Fnt06CQMxnI6HDnt9nnlYy0KGajx

刚开始配置过程中会对于很多pin的使用不了解和功能模糊的现象,在对于各个pin反复使用和调试过程中完成其pin的配置,也会明白很多功能也可以通过调试去试出来但其过程可能会花费很多时间,如果能对于其开发手册有一定的学习和参考的情况下会减少很多时间。

时间配置图

FraTdLt6uKBR0a7KCso5M8ID_r8e

在配置中会有可能出现错误的现象,这时候会有软件上面出现红色部分进行报错显示,需要进行一定相关连的正确修改。

Tools显示

FiBan_7udcTHUJV3s5P_xBWYNV5N

    5.Keil uVision 5代码编写部分过程分享

   虽然有c语言基础但对于其工程代码编写还是有很多需要学习的地方,在跟着正点原子视频学习并一步步实践过程中学会使用编写并移植入部分利于工程使用的代码,比如LCD驱动和姿态感应,LCD驱动采用的是驱动IC的SPI接口,而其相连的引脚没有可使用的硬件SPI可供使用,所以进行软件SPI的编写就移植正点原子中的代码。

FtrbGGqr4a_tT9N9X2XkjuCZr5Jd

对于姿态感应需要获取三轴加速度的值,设计蜂鸣器中需要2k-4kHz的PWM波驱动它,初始化其他定时器定时中断反转PC10电平达到PWM驱动效果,在这之前需要设立时间条件判断是否整点.

FpeMHmv3gy7S-yv-tqknxvSvFd-i

驱动成功后设计其能够调用一些GUI画图函数初步实现简单的构图或打印数字字母,其截图如下:

FjJdnJ9inP1gUw9B0unCuzZUVzCE

在用户手册中了解可以通过其芯片本身自带的RTC来实现时钟计时,资料显示它可以用来提供日历时钟功能,结合STM32CubeMX的时钟配置就可以通过简单函数来实现其时序的调用

Fg_8KR4CWrQf072-EzIKfkZuC4eg

这个需要在while(1)中去编写hal库语句,因为其成立条件保证时序的正常不断的运行。

在表盘和数字显示中为了较高的辨识度采用绿色的表盘和红色的数字完成显示代码如下

FvocnaIyFwbdJObrpCzpLVrWFJEo

在时间修改模式中设置整点报时和按键判断以及温度显示

Frwsygv6zw-rHCJtDyAwbwgv_nQP

绘制时分秒针分别采用红绿蓝颜色

FgnydkjFyavdYum22yVCSGOErvO-

关于按键状态检测以及外部中断处理借鉴CSDN上的代码进行处理编写成为一个key.c的函数

FszJPWlxRh2Zw7zNkWTp-rio3kI2

总结如下:

虽然对于模电数电有一定的基础并且对于c语言有过项目的应用,但是刚开始接触hal库编写嵌入式的项目工程还是在前期学习和准备工作中花费很多时间,但个人觉得磨刀不误砍柴工,这种前期的学习和积累是很有必要的,千里之行始于足下,如此项目看起来难度大,但只要你一步步坚持走下来就可以最后做出成功出来。

工程文件(百度网盘)

链接:https://pan.baidu.com/s/1OpS3Ac0Hxiz5JrXVBIVQkA
提取码:0000
复制这段内容后打开百度网盘手机App.

附件下载
STM32工程文件.7z
工程文件
团队介绍
湖南师范大学电子信息工程
团队成员
梁亮
湖南师范大学2019级电子信息工程本科生
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号