【程序】
#include <stm32f10x.h>
#define _BV(n) (1 << (n))
uint8_t n = 0;
uint8_t segdisp[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; // 共阳数码管段码表,取反后就是共阴的段码
void delay()
{
int i, j;
for (i = 0; i < 1000; i++)
for (j = 0; j < 1000; j++);
}
void init()
{
int i;
RCC->APB2ENR |= _BV(3); // 打开GPIOB的时钟
// 把PB8~15都设置为输出模式
for (i = 0; i < 8; i++)
{
GPIOB->CRH &= ~_BV(4 * i + 1);
GPIOB->CRH |= _BV(4 * i);
}
}
int main()
{
init();
while (1)
{
GPIOB->ODR = (~segdisp[n]) << 8;
delay();
n++;
if (n > 9)
n = 0;
}
}
void SystemInit()
{
}