STM32學習第五天---看了CT117E比賽版的硬件結構

版權聲明:本文爲博主原創文章,轉載註明出處。 https://blog.csdn.net/Adrian_1/article/details/50090089

昨天好歹瞭解了下stm32的一些個固件庫,這就說明要開啓固件庫編程。但是我看的那個視頻他用的開發板跟我這個不一樣,我用的是藍橋杯的“嵌入式系統設計”的國信長天的CT117E開發板,所以我自己又拿出我的板原理圖看了看(看了好半天也沒看出啥,實在不喜歡看這東西)。差不多知道PA,PB,PC這幾個通用I/O口的分別對應的功能了。然後就是自己編寫了一個流水燈的代碼(額,是在看懂別人的代碼基礎上自己編寫的)。一開始我就搞不懂,爲什麼非要弄個鎖存器在那鎖來鎖去的搞什麼飛機。到一個羣裏問他們why,給我的回答是,不懂基本原理學單片機真是可怕,不過最後還是弄懂了點。加個鎖存器是爲了節省I/O口,就是控制LED的這幾個i/o可以拿去幹別的事情通過鎖存器而不會影響到I/O口。(大概就是這樣子了)。

Gxc_ct117e_led流水燈 的 代碼:

#include "stm32f10x.h"
#include "led.h"


void LED_Control(uint16_t LED, uint8_t LED_Status)
void LED_Init(void);


int main()
{
    unsigned int i;
    char j = 8;
    LED_Init();
    LED_Control(LEDALL, 0);
    while (1)
    {
        LED_Control(1 << j, 1);
        for (i = 0x3fffff; i > 0; i--)
        LED_Control(1 << j, 0);
        for (i = 0x3fffff; i > 0; i--)
        j = (++j == 16) ? 8 : j;
    }
}

void LED_Init()
{
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
    
    //LED引腳配置, PC08~PC15 對應 H_D0~H_D7
    GPIO_InitStructure.GPIO_Pin = LED0 | LED1 |LED2 | LED3 |LED4 | LED5 | LED6 | LED7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    
    //74HC573鎖存引腳配置,PD2 對應 N_LE
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
}

void LED_Control(uint16_t LED, uint8_t LED_Status)
{
    if (LED_Status == 0)
    {
        GPIO_SetBits(GPIOC, LED);
        GPIO_SetBits(GPIOD, GPIO_Pin_2);    //開鎖存器
        GPIO_ResetBits(GPIOD, GPIO_Pin_2);  //關, 鎖存狀態
    }
    else
    {
        GPIO_ResetBits(GPIOC, LED);
        GPIO_SetBits(GPIOD, GPIO_Pin_2);
        GPIO_ResetBits(GPIOD, GPIO_Pin_2);
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章