lvuu 发表于 2023-5-27 11:12

STM32F10X入门——流水灯

主要的库函数位置

    /core_cm32.c/stdin.h 中定义了字符型
    stm32f10x.h>stm32f10x_conf.h 中定义了引用的外设头文件
    库文件之间的依赖调用关系 @./~.PNG
    stm32f10x.h查看地址映射
      比如 define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)

GPIO使用步骤

    配置寄存器:选定 GPIO 的特定功能 ,最基本的如:选择作为输入还是输出端口。
    数据寄存器:保存了 GPIO 的输入电平或将要输出的电平
    位控制寄存器:设置某引脚数据为 1 或 0 ,控制输出电平

    锁定寄存器:设置某锁定引脚后,就不能修改其配置
    一般使用推挽输出模式

    GPIO_TyPe_Def结构体中定义了GPIO_BASED的偏移量

RCC等时钟相关

    SYSCLK为系统时钟
    2.

lvuu 发表于 2023-5-27 11:14


void LED_GPIO_Config(void){
    /*定义一个 GPIO_InitTypeDef 类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
    /*开启 GPIOC 的外设时钟,emable即使能*/
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
    /*选择要控制的 GPIOC 引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 ;
    /*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    /*设置引脚速率为 70MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_70MHz;
    /*调用库函数,初始化 GPIOC*/
GPIO_Init(GPIOC, &GPIO_InitStructure);
    /* 初始关闭所有 led 灯,Reset 为低电平*/
GPIO_SetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5);}

lvuu 发表于 2023-5-27 11:14

.h文件编写规范

以 led.h 文件为例

    条件编译,防止头文件重复,最好加上
#ifndef __LED_H
#define __LED_H

#endif

lvuu 发表于 2023-5-27 11:14

    引用头文件 #include "stm32f10x.h"
    定义宏
#define ON0
#define OFF 1

lvuu 发表于 2023-5-27 11:14

定义带参宏以及声明对应 led.c 中的函数
#define LED1(a) if (a)\
   GPIO_SetBits(GPIOC,GPIO_Pin_3);\
else      \
   GPIO_ResetBits(GPIOC,GPIO_Pin_3)
void LED_GPIO_Config(void);

lvuu 发表于 2023-5-27 11:15

main文件编写

    头文件引用
#include "stm32f10x.h"
#include "led.h"

lvuu 发表于 2023-5-27 11:15

    声明后续函数

void Delay(__IO u32 nCount);

lvuu 发表于 2023-5-27 11:15

main函数编写
int main(void)
{   
    /* LED 端口初始化 */
    LED_GPIO_Config();

    while (1)
    {
      LED1( ON );            // 亮
      Delay(0x0FFFEF);
      LED1( OFF );          // 灭
      
      LED2( ON );
      Delay(0x0FFFEF);
      LED2( OFF );         
   
    }
}

lvuu 发表于 2023-5-27 11:15

delay函数编写
void Delay(__IO u32 nCount)   //简单的延时函数
{
    for(; nCount != 0; nCount--);
}
页: [1]
查看完整版本: STM32F10X入门——流水灯