目前共有3篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:港澳繁體▼
 
点击 回复
492 2
【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個文件夾的文件到工程中(見下圖),再進行一些工程配置即可。

 

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:492 回复数:2
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-5-14 19:36
 
©2010-2025 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。