設置 | 登錄 | 註冊

作者共發了3篇帖子。

【STM32入門級程序6】使用庫函數實現流水燈

1樓 巨大八爪鱼 2016-5-14 19:23
關於如何新建使用標準固件庫的工程,請參閱:https://zh.arslanbar.net/post.php?t=24015

【程序代碼——main.c】
#include <stm32f10x.h>

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

int main(void)
{
    GPIO_InitTypeDef init;

    RCC_APB2PeriphClockCmd(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(GPIOB, &init);

    while (1)
    {
        GPIOB->ODR = 0x100;
        do
        {
            delay();
            GPIOB->ODR <<= 1;
        } while (GPIOB->ODR); // 只要PB中有1位為1, 循環就繼續進行
    }
}

2樓 巨大八爪鱼 2016-5-14 19:28
在這個程序中,I/O口的操作還是通過ODR寄存器進行的。只不過在初始化I/O口時使用的是庫函數而不是寄存器。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
這句話的作用是開啟PB上的時鐘。這個相當於之前的RCC->APB2ENR |= _BV(3);。

GPIO_InitTypeDef是一個結構體類型,GPIO_Init函數根據該結構體中的各成員變量初始化指定的I/O口。GPIO_Pin_All表示將該埠的所有I/O口都初始化,GPIO_Speed用於指定埠的輸出速率,這裡是50MHz(注意大小寫)。GPIO_Mode用於設置工作狀態,GPIO_Mode_Out_PP表示推輓輸出。
3樓 巨大八爪鱼 2016-5-14 19:36
使用標準固件庫開發STM32程序時,頭文件不用改變,只需要複製庫中4個文件夾的文件到工程中(見下圖),再進行一些工程配置即可。

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。