自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 SPI驱动W25Q64

PA15为W25Q64片选线配置为GPIO输出模式。

2024-03-12 22:28:40 581

原创 I2C驱动AT24C02

写操作需要在设备地址字和确认之后有一个8位的数据字地址。该微控制器可以传输多达7 (1K/2K)或15 (4K, 8K, 16K)更多的数据字。如果有超过8个(1K/2K)或16个(4K, 8K, 16K)数据字传输到EEPROM,数据字地址将“翻转”,先前的数据将被覆盖。接下来的3位是1K/2K EEPROM的A2、A1和AO设备地址位。设备地址字由一个强制的1,0序列的前四个最有效的位,如所示。1K/2K EEPROM能够进行8字节的页写入,4K、8K和16K设备能够进行16字节的页写入。

2024-03-12 22:28:10 439

原创 PWM驱动智能小车舵机运动

舵机90°时 PWM周期为20ms 占空时间为1.5ms。舵机0°时 PWM周期为20ms 占空时间为0.5ms。舵机180°时 PWM周期为20ms 占空时间为2ms。舵机45°时 PWM周期为20ms 占空时间为1ms。初始化让舵机位于最左边,也就是0°。

2024-03-11 22:24:21 400

原创 PWM配置智能小车电机-让小车动起来

PC6为左前电机的PWM输入,为电机提供动力。PG7、PG8控制左前电机的方向。

2024-03-11 22:15:23 558

原创 DHT11温湿度数据获取

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2024-03-03 15:32:48 980

原创 使用ADC获取光照强度和电源电压

每次只获取一个通道的adc数据。

2024-03-03 15:21:15 536

原创 NWatch-Alarm闹钟功能实现

alarm模块是STR菜单界面,更改界面的值通过状态机的方式逐个改变每个数据的值然后通过确认赋值,改变完所有数据值后保存到外部Flash中。每次时间或者闹钟响后,更新最近一个闹钟。通过计算本周开始到当前闹钟时间总共过去多少分钟,最少的就是最近一个闹钟。如果当前时间是闹钟设置的时间,则进行相应。改变当前页面绘制函数称为闹钟响后的绘制函数。使用SPI读取W25Q的ID验证通信的正确性。使用CubeMx自动配置。

2024-02-28 21:36:10 478

原创 NWatch-FlashLight功能实现

每隔阈值一定的事件亮灭反转,实现闪光效果。每次按下确认键后调节阈值。

2024-02-26 10:26:47 393

原创 NWatch手表-Setting界面-Sound功能实现

APPConfig关于声音的定义是通过位域来实现的,UI声音,闹钟声音和时钟声音这三个声音都占两位。最大是11最小是00.Sound部分是IMAGE界面主要由三个部分组成,UI声音,闹钟声音和时钟声音。在main函数中调用,轮询查询当前播放的音律是否时间结束,如果结束播放下一个。当按下确认键后,设置APPConfig中不同部分声音的值。程序中使用的蜂鸣器由TIM3的CH4的PWM来驱动。

2024-02-26 09:18:18 1043

原创 NWatch-Setting菜单-DateTime功能实现

进入Setting的日期界面后 设置该页面的按钮和加载函数等,该界面为STR类型。

2024-02-25 20:40:57 442

原创 STM32F103的电子时钟-NWATCH( 开源)

这个项目是来自于GitHub开源代码 NWATCH-WATCHX。

2024-02-25 19:37:13 757 1

原创 NWatchSetting界面

本文主要仿照NWatch完成了NWatch中Setting界面的功能的实现。NWatch的Setting界面。

2024-02-19 23:20:59 394 1

原创 NWatch多级菜单技术分析

首先NWatch会通过一个菜单结构体menu_s来设置当前菜单的内容,例如设置当前的菜单的被选的应用、应用个数、菜单名字、菜单类型、菜单的函数和上一级菜单的加载函数等相关信息。初始化主菜单通过菜单的设置函数来设置当前菜单的的内容。例如下面是设置手表菜单的内容,用来显示系统的时间和日期。当按下确认键以后进行NWatch主界面,重新设置菜单的内容和功能。

2024-02-15 10:20:40 632 1

原创 模仿NWatch的手表主界面

该程序是在FreeRTOS下编写 在裸机中也可以正常使用在主函数中使用while()循环即可。

2024-01-23 22:00:21 473 1

原创 CubeMX配置定时器

【代码】CubeMX配置定时器。

2024-01-23 21:44:13 497 1

原创 OLED使用printf格式化打印和显示汉字

汉字结构体 由索引和数据量部分组成 ,索引的长度和编码格式有关。UTF-8编码下一个汉字占三个字节,GBK编码下占两个。底层使用 显示字符串函数。

2024-01-18 16:42:16 828 1

原创 Keil中使用中文字符编译时候出错

在Keil工程中,在数组初始化时候在数组中添加了中文字符。

2024-01-18 11:20:35 525

原创 取模软件获取8*8和16*8的英文字符

将数据extern到外部,让OLED使用。把取模的数据放入.c文件中。

2024-01-17 20:54:55 510

原创 0.96寸OLED屏幕驱动

本程序通过I2C1来控制OLED的显示,所以先使能硬件I2C1。图像显示函数 : 将图像数据更新到显示器的显存缓冲区中。

2024-01-17 20:28:57 498 1

原创 开发板和网络调试助手在不同局域网下不能通信的原因

【代码】开发板和网络调试助手在不同局域网下不能通信的原因。

2024-01-05 19:12:32 405 1

原创 STM32F103编译过程链接出现内存不足问题的解决方法

使用FreeRTOS提供的内存分配和释放函数即可解决问题。在创建环形缓冲区的过程中使用了,C语言库函数malloc。在代码编译和链接过程中出现了内存不足的问题。注意:尽量使用单片机操作系统提供的库函数。

2024-01-05 16:17:44 932 1

原创 Win11打开应用弹窗

让win11打开应用时候不在弹窗。

2023-12-28 23:20:45 407 1

原创 Stm32CubeMx遇到Proxy Error

Stm32CubeMx安装以后,新建工程时有时候会出现proxy error。

2023-12-28 23:13:04 1317 1

原创 打砖块游戏-挡球板移动控制

本文使用FreeRTOS中的队列以及队列集来实现挡球板的控制,将不同外设的队列添加入队列集当中,队列集一直处于阻塞读当中,当不同的控制外设产生数据后将写入对应的队列中,然后队列集会被唤醒读取对应的数据。

2023-12-19 12:06:36 131 1

原创 打砖块游戏-六轴传感器姿态控制

每隔50ms读取x、y、z轴对应的加速度值和角速度值。然后通过y轴的加速度值计算出来y轴倾斜的角度来对挡球板的位置进行控制。本文使用的六轴传感器时MPU6050,相关的原理大家可以去搜索资料,本文只讲打砖块游戏对于六轴传感器的应用。MPU6050通过I2C来进行通信,因此本文将初始化STM32F103的I2C2来驱动MPU6050。

2023-12-19 11:49:04 68 1

原创 打砖块游戏-旋转编码器控制

设置PA6引脚为上升沿中断触发模式,每当触发中断时,判断B的值如果B为低电平,则说明A比B快90°说明为顺时针转动,反之慢90°逆时针转动。旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可的值旋转轴的速度与方向。即当旋转编码器顺时针转时,A比B提前90°(一个周期的方波信号为360°);反之A比B延迟90°。下图中的A、B连接的引脚以具体初始化的引脚为准,本文中A连接的是PA6,B连接的是PA8.

2023-12-19 11:30:50 67 1

原创 挡球板控制之红外遥控-红外解码

设置PB1引脚为双边沿中断触发引脚,每次发生中断记录当前TIM的计数值count保存入循环缓冲区当中。然后译码的时候相邻两个count相减就是半个周期的数据。NEC红外编码的关于引导码和数据码的约定。NEC红外编码的一帧数据的组成。NEC红外编码的重复码。

2023-12-19 10:53:50 41 1

原创 NWATCH打砖块小游戏移植

打砖块游戏主要由两个子任务组成,分别是挡球板任务以及小球任务。1. 硬件模块屏幕显示 : 0.96 寸OLED I2C通信传感器模块:红外遥控、旋转编码器和六轴姿态传感器挡球板任务程序流程图挡球板任务,不断从消息队列中获取控制信息。//循环读取按键值 如果是左右 则改变木板移动方向 否则 进入下一次循环while (1)}else//隐藏滑动板}else//滑动板越界判断//显示滑动板移动小球的程序流程图。

2023-12-16 21:15:08 374 4

原创 C语言循环缓冲区设计

在C语言中,我们经常需要处理数据的缓冲区。循环缓冲区是一种特殊类型的缓冲区,它允许我们在固定大小的缓冲区中持续地读取和写入数据,就像在一个环形轨道上一样。当数据到达缓冲区的末尾时,它会从缓冲区的开始处继续写入。这种设计非常高效地使用了内存空间。在本文中,我们将讨论如何设计一个C语言的循环缓冲区。我们将创建一个数据结构来保存缓冲区的状态,并定义几个函数来读取、写入和清除缓冲区。。首先,我们需要定义一个结构体来保存缓冲区的信息。head:指向缓冲区中第一个有效数据的指针。

2023-11-29 16:01:17 441 2

原创 arm-linux-gcc 找不到命令?

在ubuntu下安装arm的交叉编译器时出现的arm-linux-gcc 找不到命令问题

2022-10-26 12:05:05 5310 2

Nwatch-基于江协科大STM32版本

Nwatch-基于江协科大STM32版本

2024-02-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除