用stm32和共阴极数码管制作一个计数器代码c语言
时间: 2024-02-13 16:04:15 浏览: 75
好的,下面是用STM32和共阴极数码管制作计数器的C语言程序代码:
```c
#include "stm32f10x.h"
#define DIGIT0 GPIO_Pin_0
#define DIGIT1 GPIO_Pin_1
#define DIGIT2 GPIO_Pin_2
#define DIGIT3 GPIO_Pin_3
void GPIO_Configuration(void);
void Delay(__IO uint32_t nCount);
int main(void) {
int count = 0;
GPIO_Configuration();
while (1) {
if (count > 9999) count = 0;
GPIO_Write(GPIOA, DIGIT0);
GPIO_Write(GPIOB, count % 10);
Delay(100);
GPIO_Write(GPIOA, DIGIT1);
GPIO_Write(GPIOB, (count / 10) % 10);
Delay(100);
GPIO_Write(GPIOA, DIGIT2);
GPIO_Write(GPIOB, (count / 100) % 10);
Delay(100);
GPIO_Write(GPIOA, DIGIT3);
GPIO_Write(GPIOB, (count / 1000) % 10);
Delay(100);
count++;
}
}
void GPIO_Configuration(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = DIGIT0 | DIGIT1 | DIGIT2 | DIGIT3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void Delay(__IO uint32_t nCount) {
for(; nCount != 0; nCount--);
}
```
代码中,首先定义了数码管的引脚,然后在`GPIO_Configuration()`函数中对GPIO口进行了初始化。在`main()`函数中,通过循环实现计数器功能,每次循环都将计数器的值分解成四位数字,然后通过GPIO口依次输出到数码管上,实现数码管的显示。
需要注意的是,在每次循环中都要进行一定的延时,否则数码管的显示会非常快,无法看清楚。可以通过调节`Delay()`函数中的延时时间来控制数码管的显示速度。
阅读全文