|
本帖最后由 SquallBest 于 2017-5-17 19:37 编辑 加入社区快到一年的时间了。首先,请各位版主原谅我默默潜水学习而没发帖。因为我是高龄硬件小白,34岁才开始从头学硬件编程。平时还有工作,所以学习进度慢了些。再次深表歉意。 下面言归正传,说说硬件和代码。 这次项目中需要用到8*8的双色LED点阵制作个通行指示灯,没有别的高级功能。这时候我就想到了stm32F030F4P6这款stm32最便宜的单片机。因为项目功能少,资源完全够用。就淘了一块stm32F030F4P6的核心板,貌似不到10块钱。然后又淘了一个双色点阵模块。使用的是TA6932的控制芯片。东西拿到手的时候发现,点阵模块是5V的。。。又淘了一个TXS0108E 高速全双工的电平转换模块。唉~!新手小白,在选东西上浪费将近两周的时间。 鲁莽小白的第一步:连线 看到点阵模块说明是3个IO接口。直接找到核心板PA0,PA1,PA2这三个IO连接到TTL转换版的A1,A2,A3上,连上3.3V的电源口和GND。对应的B1,B2,B3连接到点阵模块的STB,CLK,DIN接口上。电平转换模块需要5V电源从核心板取。但是,这时候遇到了个问题。TTL转换板上说需要一个IO口高电平使能这个芯片(OE脚)。由于是小白,不太懂,怕炸片子(之前炸过几片2596,心理阴影无限大),直接没接这个脚。点阵模块的5V电源和GND都是从核心板取的。 第二部:配置工程 万事俱备,硬件放一边。打开STM32CubeMX。对小白来说,这是一个神器。再也不用为配置环境而烦恼了(我曾经为了配置标准库几天没睡觉,后来在社区朋友帮助下才点亮了LED灯。。。再次心理阴影)。
新建一个工程
选择使用的mcu。这里挺人性化的,有筛选器。不然,眼睛都花了。然后双击选择的MCU。这里我用的是stm32F030F4P6. 然后进入界面设置引脚。这时候发现个问题。因为不知道以后这个东东以后是否会扩展或者在别的地方是否会使用。所以,尽量避开通信接口。
发现PA2,PA3引脚是USART1的TX,RX引脚,所以避开,更换PA2引脚到PA9。如图下图
同时把USART1也注册上了。但是本次没使用。三个IO定义为推挽输出。
然后,设置工程代码的属性
然后我又选择了将部分代码分离出main.c。
点击OK就在你配置的工程地址里生成了一个项目工程。后来我又仔细看了下TXS0108E的文档。文档说OE脚配置个IO就可以。又重新配置了一下工程,把PA10配置成推挽输出,连接到TXS0108E的OE脚,并把引脚名称加上去了。如下图。
重新生成一下工程代码。OK。让我们打开生成的keil5工程。这里,需要写一个驱动代码。我以前是做c#的,我把他理解为类库。这样可以方便的移植和调用。哈哈。先在工程中添加两个文件。TA6932.h和TA6932.c。一个是头文件,一个代码文件。 看代码(这里我传代码四次,每次都中文乱码,我就放在后面的压缩包里,大家自己下载看吧。) 其中,TA6932.c文件的void Init6932Interface(void)方法我加入了一个拉高OE电平的操作。这块儿可以放到main.c的main方法中的。以后就准备用这个电平转换模块了。所以怕忘记,就写在屏幕初始化里了。HAL_GPIO_WritePin(GPIOA,CLKPin_Pin,GPIO_PIN_SET);因为引脚是字母命名的所以换引脚也不怕。哪怕是移植到别的板子上,只要名字相同,都能用。 写在最后。 本想弄个视频上传一下的。但是太麻烦,不会弄。我算是大龄硬件小白,有些东西还不太会整。还有,第一次写这样的技术文章,结构比较乱,还请各位多多包含。最后,上传代码。
|
微信公众号
手机版
多谢老大鼓励