MyFunction.c
#include "stm32f4xx_hal.h"
void setNumber(unsigned int x) {
int x0 = x % 10;
int x1 = (x / 10) % 10;
int x2 = (x / 100) % 10;
int x3 = (x / 1000) % 10;
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
setDigit(x0);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
setDigit(x1);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
setDigit(x2);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
setDigit(x3);
HAL_Delay(1);
}
void setDigit(int x) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 0);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 0);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 0);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 0);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, 0);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, 0);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 0);
HAL_Delay(1);
if (x == 0) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, 1);
} else if (x == 1) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
} else if (x == 2) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
} else if (x == 3) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
} else if (x == 4) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
} else if (x == 5) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
} else if (x == 6) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
} else if (x == 7) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
} else if (x == 8) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
} else if (x == 9) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, 1);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
}
}
Control Code
unsigned int timer = 0;
unsigned int x = 0;
while (1) {
setNumber(x);
timer++;
if (timer % 20 == 0) {
x++;
}
}