登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] emmm勉强半成品项目吧

[复制链接]
发表于 2024-2-24 00:53:44 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 软件
学习安排: 结合寒假期间所学stm32知识做一个人机交互界面
应用软件:keil4 汉字取模软件 flymcu
开始时间: 2024-02-21
结束时间: 2024-02-24
声明:由于我学的并不熟练,所有的驱动程序均在网络上借鉴,不过main函数由自己编写。

界面介绍:采用oled屏显示字符与汉字。
主界面:调用内部rtc时钟,设置好当前时间,采用i2c总线接口连接外设lm75a温度传感器和oled显示屏,采集当时温度并在oled屏上显示。 微信图片_20240224002347.jpg (如图)






第二界面:(adc数据展示)分为adc1、2、3三个通道,通过观察开发板io口的连接,将adc通道与相应的io连接(adc1为电压调节数据,adc2为光敏电阻数据,adc3为自定义,这里设定了pa1io口,故显示pa1口电平数据) 微信图片_20240224002326.jpg (如图)
第三界面:(本意打算设计一个检测高低温,高低光度和设置定时闹钟功能的界面,不过随着越写程序越卡,就只保留了最简单的切换功能) 微信图片_20240224002340.jpg (如图)
接下来详细介绍程序:
1首先设置了菜单值menu,作为几个主界面的切换菜单值。调用了外设encoder旋转编码器并设置一个参数来接受旋转编码器传出的数据,向左传出2,向右传出1,按下传出3 。
2为了能够使复位或者断电不丢失数据,调用了stm32的bkp寄存器,由于stm32固件库含有其函数,就在每次切换完菜单后将菜单值存放如bkp寄存器钟,while循环开始处用menu读取bkp存储值,如此方可得出每次复位或断电前的菜单值,并直接跳转到该菜单。
3程序中也运用了一点中断,为了防止每次切换菜单时不能及时读取旋转编码器的传出值,将旋转编码器的io口设置为下降沿中断,故每次旋转编码器时总能及时读取传出值。
4程序中也用了一些巧妙的实用函数,像求和函数和去除最大最小值函数。
程序如图: 屏幕截图 2024-02-24 001803.png 屏幕截图 2024-02-24 001915.png 屏幕截图 2024-02-24 001931.png 屏幕截图 2024-02-24 001946.png 屏幕截图 2024-02-24 002001.png 屏幕截图 2024-02-24 002012.png 屏幕截图 2024-02-24 002042.png 屏幕截图 2024-02-24 002052.png

在编程中也遇到了困扰好几天的问题:就像温度传感器的读取值和rtc时钟的读取值 在oled屏上如果显示太多的话就会让程序卡死,每次程序卡死的时候我只需要把年份减去或者月份减去就能够成功运行。我得出的结论就是 单片机很脆弱,不能在while中加很多if去增加他的负担,(如果想减负就写一些中断或者是while小循环),但只是猜测
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表