基于N32G452的数码管驱动程序
时间: 2023-04-11 17:02:05 浏览: 90
可以提供一个基于N32G452的数码管驱动程序的代码示例,如下:
#include "N32G452xx.h"
#define SEG_A (1 << 0)
#define SEG_B (1 << 1)
#define SEG_C (1 << 2)
#define SEG_D (1 << 3)
#define SEG_E (1 << 4)
#define SEG_F (1 << 5)
#define SEG_G (1 << 6)
#define SEG_DP (1 << 7)
#define DIGIT_0 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F)
#define DIGIT_1 (SEG_B | SEG_C)
#define DIGIT_2 (SEG_A | SEG_B | SEG_D | SEG_E | SEG_G)
#define DIGIT_3 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_G)
#define DIGIT_4 (SEG_B | SEG_C | SEG_F | SEG_G)
#define DIGIT_5 (SEG_A | SEG_C | SEG_D | SEG_F | SEG_G)
#define DIGIT_6 (SEG_A | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G)
#define DIGIT_7 (SEG_A | SEG_B | SEG_C)
#define DIGIT_8 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G)
#define DIGIT_9 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_F | SEG_G)
#define DIGIT_BLANK 0
#define DIGIT_NUM 4
uint8_t digit[DIGIT_NUM] = {DIGIT_0, DIGIT_1, DIGIT_2, DIGIT_3};
void delay(uint32_t count)
{
for (uint32_t i = 0; i < count; i++);
}
void display_digit(uint8_t d)
{
GPIOA->ODR = d;
}
void display_init(void)
{
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA->MODER &= ~(GPIO_MODER_MODER0_Msk | GPIO_MODER_MODER1_Msk | GPIO_MODER_MODER2_Msk | GPIO_MODER_MODER3_Msk);
GPIOA->MODER |= (GPIO_MODER_MODER0_0 | GPIO_MODER_MODER1_0 | GPIO_MODER_MODER2_0 | GPIO_MODER_MODER3_0);
GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_0 | GPIO_OTYPER_OT_1 | GPIO_OTYPER_OT_2 | GPIO_OTYPER_OT_3);
GPIOA->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEEDR0_Msk | GPIO_OSPEEDR_OSPEEDR1_Msk | GPIO_OSPEEDR_OSPEEDR2_Msk | GPIO_OSPEEDR_OSPEEDR3_Msk);
GPIOA->OSPEEDR |= (GPIO_OSPEEDR_OSPEEDR0_0 | GPIO_OSPEEDR_OSPEEDR1_0 | GPIO_OSPEEDR_OSPEEDR2_0 | GPIO_OSPEEDR_OSPEEDR3_0);
GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR0_Msk | GPIO_PUPDR_PUPDR1_Msk | GPIO_PUPDR_PUPDR2_Msk | GPIO_PUPDR_PUPDR3_Msk);
GPIOA->PUPDR |= (GPIO_PUPDR_PUPDR0_0 | GPIO_PUPDR_PUPDR1_0 | GPIO_PUPDR_PUPDR2_0 | GPIO_PUPDR_PUPDR3_0);
}
int main(void)
{
display_init();
while (1)
{
for (uint8_t i = 0; i < DIGIT_NUM; i++)
{
display_digit(digit[i]);
delay(1000);
}
}
}