基于STM32F103系列蓝牙读写+OLED显示的DIY程序

目录

写在前边

  硕士期间主要和DSP打交道,也算是在嵌入式硬件软件方向入了门,抛开项目不谈,自己也有想法向DIY大佬学习的想法,觉得有趣又好玩,如果做的好的话也有一些实用价值。
  一直没找到合适的切入点和合适的时间去开启自己的DIY之路,在较为空闲的两天,因一些偶然的机遇与想法,在网上买了些组件,就开始了从“零”学习。之所以说从零,一方面是stm系列之前没接触过,甚至编译器只在几年前偶尔用过几次,另一方面来说所用的一些外设项目中也没有使用过,原理上需要重新学习了解。
  整个过程是在已有的代码基础上进行改进和完善的,对底层寄存器的具体配置关注较少(这也是库多的好处)。由于时间原因,并没有对hal库进行过多学习(看起来很复杂,但是hal库的广泛应用印证它应该不会是复杂的,只是表面而已)。程序均是基于标准库改写的。;也看了正点原子的学习资料,目前基于cubmax和hal库进行stm的开发工作应该是最主流的,后续有时间也进行抽空学习。
  本文为了给自己的一些收获留一个记录,不对的地方还请多多批评指正,共同进步。

功能说明

  基于stm32F103最小系统,外设匹配HC-05蓝牙模块和0.96寸OLED,可通过手机APP向stm32写入数据通过IIC通信使数据在OLED进行实时显示。基于此后续可添加诸多功能,在系统中实现数据的无线传输与实时显示。

硬件及接口连线

  本着成本相对最低的原则,选择使用硬件包括STM32F103C8T6最小系统核心板、0.96寸IIC接口OLED模块、CH340EUSB转TTL模块(配置蓝牙模块用)、ST-LINK(下载器)、HC-05蓝牙模块。
  主要接口连线如下:(主要关注引脚的功能属性,且与代码中对应)

STM32F103C8T6外设
A5OLED模块SCL
A7OLED模块SDA
A9蓝牙模块RX
A10蓝牙模块TX

涉及的基本原理知识

串口通信基本原理

  蓝牙模块接收到数据后采用串行通信的方式传给STM32,故此处的原理与一般的串行通信原理一致。但要注意程序里USART对波特率与帧格式的配置要与蓝牙的配置保持一致。(后文会讲)

OLED基本原理

  具体原理参见相关资料,通俗理解,将其看作一个存储器,向对应的地址写入数据,不同的数据即构成了不同的图像。

IIC基本原理

  其优点为4根线即可进行数据传输(串行时钟线SCK和数据线SDA)。
  注意几点:1、每一个字节必须保证是 8 位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有 9 位)。2、此应用中stm32为主机,OLED为从机,其传输过程如下:(主机向从机发送数据, 数据传送方向在整个传送过程中不变)


  图中,有阴影部分表示数据由主机向从机传送, 无阴影部分则表示数据由从机向主机传送。 A 表示应答, A 非表示非应答(高电平)。S 表示起始信号,P 表示终止信号。

代码说明

  1、复用功能GPIO口使用其中一种功能时,使能该功能对应的外设时钟即可。(这点迷了我好久QAQ…对DSP而言是专门有寄存器配置复用功能的)。
  2、串口通信在中断中进行实现。
  3、由于没有IIC接口,故使用软件编写的IIC协议接口(网上找的程序)。IIC在主程序里循环执行。

调试方法

Keil及下载器使用避坑

1、下载好keil后激活软件需要右键以管理员身份打开才可以正常激活。
  安装包及下载步骤见下面链接:
  https://mp.weixin.qq.com/s/5LXIfqF9N5hFqGpiQoKgoQ
2、ST-LINK使用注意事项
  配置步骤见附件1-ST-LINK+V2使用说明P9-P12页。
  配置过程中添加programming algorithm文件时没有STM32F103系列的,需在官网下载。我已经下载好了,见附件2-programming algorithm文件。直接打开一路往后即可完成配置。
  注:我买的USB口不是很稳定,不知道是ST-LINK的原因还是电脑接口的原因。另外,ST-LINK好像不能在线调试,具体功能没有去仔细开发。
3、CH340虚拟串口的安装
  这个是在配置蓝牙模块或使用串口助手与STM通信时需要。
  安装包见附件3-CH340虚拟串口驱动
  串口调试助手见附件4-串口调试工具

蓝牙配置

  将CH340EUSB转TTL模块与蓝牙模块相连,使用串口调试助手软件对HC-05蓝牙模块进行配置(蓝牙名字、密码都可以),波特率要与程序里一致。
  注意:不同的蓝牙模块指令设置不一样,我配置的时候误用了HC-06的指令,浪费了好久时间…
  HC-05蓝牙模块指令设置链接如下:
  https://blog.csdn.net/m0_50862404/article/details/119927661
  硬件接好线,并把附件5-OLED+蓝牙程序烧写进去之后,连接手机蓝牙APP(见附件6-HCbluetooth)即可食用。

程序修改方法

  说明:目前仅支持单字符传输与显示,之后进一步优化程序实现多字符传输显示(这一点配置有点点小麻烦,有时间了再搞)。
  不追求原理的话可直接按如下进行修改。
  如需修改显示的汉字,则先使用附件7-0.96OLED显示屏专用取模工具进行取模,并将数据复制到

oledfont.h

  下边的代码即为字模的显示配置,第一个参数为想要显示的位置的横坐标,第二个为纵坐标,第三个为显示的第几个字。

OLED_ShowCHinese(25,0,0);

  下边的代码中res1变量即为通过手机APP发送的数据。第一、二个参数为位置,最后一个为字号。

OLED_ShowChar(60,6,res1,16);

3h完结…感觉系统总结一下也需要挺多时间的…后续基于此程序不定时更新…

附件

见个人主页资源页面,0积分下载,仅作参考交流。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值