目前共有2篇帖子。
【STM32入门级程序7】使用库函数实现数码管从1970到2038计数
1樓 巨大八爪鱼 2016-5-14 19:30
#include <stm32f10x.h>

#define _BV(n) (1 << (n))

uint8_t segdisp[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
uint16_t nNumber = 1970;

void delay()
{
    uint32_t i;
    for (i = 0; i < 20000; i++);
}

int main(void)
{
    GPIO_InitTypeDef init;
    uint8_t i;
    uint8_t nCounter = 0;
    uint16_t nTemp;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

    init.GPIO_Pin = GPIO_Pin_All;
    init.GPIO_Speed = GPIO_Speed_50MHz;
    init.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOA, &init);
    GPIO_Init(GPIOB, &init);

    while (1)
    {
        nTemp = nNumber;
        for (i = 7; i >= 4; i--) // i表示要显示的数码管
        {
            GPIO_Write(GPIOA, ~_BV(i));
            GPIO_Write(GPIOB, ~segdisp[nTemp % 10] << 8);
            delay();
            nTemp /= 10;
        }
        nCounter++;
        if (nCounter > 100)
        {
            nCounter = 0;
            nNumber++;
            if (nNumber > 2038)
                nNumber = 1970;
        }
    }
}

2樓 巨大八爪鱼 2016-5-14 19:31
【知识点】
1.在使用库函数开启时钟时,可以用或运算符“|”同时开启多个端口的时钟。
2.除了使用ODR寄存器写入I/O口外,还可以用库函数GPIO_Write来实现。

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
 
 
©2010-2024 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。