STM32硬件SPI控制TM1638按键数码管LED显示模块
从淘宝买来的,TM1638专门是控制LED的,LED组合起来就可以变成数码管,还有按键,这个我就没管了,不想管了,发这个帖子只是为了记录下经验,待以后会过头来看的时候,可以一遍就知道,所以尽量写得详细点。
手头上的项目用的是共阳极,而我买的是共阴极的,而且例程给的是STM32模拟IO实现的。
太浪费资源了,想尽办法折腾了1整体,终于搞定了SPI硬件实现的方式。写点东西给大家分享下,免得走弯路。本次重点介绍SPI硬件配置方面。
先来个照片,是共阴极的
原理图
废话不多说了,开始贴程序。
3.3V供电;
STM32F103c8t6;
SPI1;
SPI_Direction_1Line_Tx;
完整程序如下:
//TM1638.C文件
#ifdef USE_TM1638_SPI
#defineTM1638_SPIx SPI1
#defineTM1638_SPI_APBxClock_FUN RCC_APB2PeriphClockCmd
#defineTM1638_SPI_CLK RCC_APB2Periph_SPI1
#defineTM1638_SPI_GPIO_APBxClock_FUN RCC_APB2PeriphClockCmd
#defineTM1638_SPI_GPIO_CLK RCC_APB2Periph_GPIOA
#defineTM1638_SPI_SCK_PORT GPIOA
#defineTM1638_SPI_SCK_PIN GPIO_Pin_5
#defineTM1638_SPI_SCK_Low() GPIO_ResetBits(TM1638_SPI_SCK_PORT, TM1638_SPI_SCK_PIN)
#defineTM1638_SPI_SCK_High() GPIO_SetBits(TM1638_SPI_SCK_PORT, TM1638_SPI_SCK_PIN)
#defineTM1638_SPI_MISO_PORT GPIOA
#defineTM1638_SPI_MISO_PIN GPIO_Pin_6
#defineTM1638_SPI_MOSI_PORT GPIOA
#defineTM1638_SPI_MOSI_PIN GPIO_Pin_7
#defineTM1638_SPI_MOSI_Low() GPIO_ResetBits(TM1638_SPI_MOSI_PORT, TM1638_SPI_MOSI_PIN)
#defineTM1638_SPI_MOSI_High() GPIO_SetBits(TM1638_SPI_MOSI_PORT, TM1638_SPI_MOSI_PIN)