stm32f103c8t6驱动tm1638 用gpiob 5 6 7代码
时间: 2023-09-04 07:10:39 浏览: 86
以下是一个简单的示例代码,使用GPIOB的5、6、7引脚驱动TM1638:
```
#include "stm32f10x.h"
#define CLK_PIN GPIO_Pin_5
#define DIO_PIN GPIO_Pin_6
#define STB_PIN GPIO_Pin_7
void TM1638_Init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = CLK_PIN | DIO_PIN | STB_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, CLK_PIN | DIO_PIN | STB_PIN);
}
void TM1638_SendByte(uint8_t data) {
uint8_t i;
for (i = 0; i < 8; i++) {
GPIO_ResetBits(GPIOB, CLK_PIN);
if (data & 0x01) {
GPIO_SetBits(GPIOB, DIO_PIN);
} else {
GPIO_ResetBits(GPIOB, DIO_PIN);
}
data >>= 1;
GPIO_SetBits(GPIOB, CLK_PIN);
}
}
void TM1638_WriteData(uint8_t address, uint8_t data) {
GPIO_ResetBits(GPIOB, STB_PIN);
TM1638_SendByte(0x44);
GPIO_SetBits(GPIOB, STB_PIN);
GPIO_ResetBits(GPIOB, STB_PIN);
TM1638_SendByte(address | 0xC0);
TM1638_SendByte(data);
GPIO_SetBits(GPIOB, STB_PIN);
}
int main(void) {
TM1638_Init();
TM1638_WriteData(0x00, 0x01); // 在第一个LED上显示数字1
while (1);
return 0;
}
```
这个代码使用了STM32的CMSIS库,你需要根据自己的开发环境进行适当的修改。你需要将这个代码上传到你的开发板上进行测试。
阅读全文