STM32电子时钟 WATCHX-NWATCH( 开源)

话不多说,先看成果

主页面在这里插入图片描述
目录在这里插入图片描述
游戏在这里插入图片描述


提示:上面的图用的板子是我自己做的c8t6板子


项目介绍

一、来源

首先这个项目是开源代码,全部来自网络(来源我也会放出来),当然我希望把这个项目扩展开来,怎么扩展,后面再讲。

最初从b站看到一个视频 应该是一个英国老哥搞的 NWATCH-WATCHX

B站链接:https://b23.tv/ph7jgv

后来一个国内的大佬移植到了stm32上面,他写了f4和f1两个版本
github链接:
https://github.com/Soysauce007/WatchX-Nwatch-stm32/
如果手上有正点原子mini板,又不想改代码的同学移步文章最后,有可直接运行的工程代码。

二、项目介绍

1.代码讲解

	整体程序还是很庞大的,主要分几个部分做简单的介绍
	1.硬件模块
		CPU:stm32f103c8t6
		0.96寸OLED SPI通信
		按键
		蜂鸣器
		外部时钟芯片
		led灯

但是在我的板子是stm32f103rct6 ,就是正点原子的mini板 ,当中没有蜂鸣器和外部时钟芯片,而且有些功能我也不需要,比如rtc时钟,原因后面说。

因此按照大佬的注释,我删减了部分代码,修改了部分硬件初始化。
初始化代码如下(示例):

void c_setup()
{
  SystemInit();	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	delay_init();             //初始化延时函数
#if COMPILE_UART
		uart_init(UART_BAUD);		//初始化串口波特率为115200
#endif

	memset(&oledBuffer, 0x00, FRAME_BUFFER_SIZE);
	OLED_Init();              //初始化oled 四线模拟spi模式
	led_init();               //初始化LED PA8 PA15
	battery_init();		//ADC初始化 PA0  必要的模块
	appconfig_init();
	alarm_init();       //依旧无法储存闹钟,每次重启以后需要自定义
	buttons_init();		//按键初始化  
	millis_init();		//定时器
	time_init();		//启动手表时钟

	display_set(watchfaceOpen);
	display_load();	
	OLED_ColorTurn(appConfig.invert );
}

循环代码如下:

void c_loop()
{
    time_update();
  if(pwrmgr_userActive())
  {
      battery_update();
      buttons_update();
  }
    led_update();
#if COMPILE_STOPWATCH
  stopwatch_update();
#endif
  if(pwrmgr_userActive())
  {
     alarm_update();
     display_update();
  }
}

其他的我就不仔细放出来了,太多了。需要的自己研究,然后评论区交流。

我的见解:项目中包含了大量函数指针,最初让我看的很头痛。后来发现,其实就是一种注册机制,也就是说,每个应用app,其中的代码都和别的app是隔离开来的,每次调用的时候都会向上注册。这个就有点像linux的运行了,把app注册到内核,内核运行这部分代码。这样保证了项目的可扩展性,和项目内每个app不会相互干扰。

3.项目的扩展

1.加入蓝牙模块
我想做成小米手环那样的,可以连接手机app,手机的app给板子做时间的校准,再加入天气和温度。
最关键,我想加入换壁纸功能。思路:手机app打开一张图,先做二值化和压缩处理,这里可能需要局部二值化,因为我试过,全局二值化效果不好。
2.结构
他们做的都是手表,我觉得市面上的手环功能比这个做的确实还是强多了,和他们做对比不合适,我打算做成桌面摆件那样的。摆在办公桌子上那种。
这样的话那么我会再设计机构,初步打算用亚克力板包裹pcb板的方式做个初步的先试试。
这样的话,其实功能还可以添加很多,比如显示电脑cpu的运行情况,消息通知,电脑本次开机以来的使用时间,甚至做蓝牙鼠标也不错。
3.当然是再加些游戏啦,像什么贪吃蛇,俄罗斯方块都可以加上去。

最后

1.我的代码
另外我放出了我的stm32f103rct6 (正点原子mini板)的完整工程,已经调试通过,同时readme。txt写了oled的io定义 ,同学们插上oled,就可以用自带的按键进行操作。
代码链接:https://download.csdn.net/download/qq_40525440/13115229
2.展望
我后续会更新我的工程进展,把我说的做出来,有兴趣的关注。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值