[STM32F1] STM32F10X入门——流水灯

[复制链接]
1288|9
 楼主| lvuu 发表于 2023-5-27 11:12 | 显示全部楼层 |阅读模式
主要的库函数位置

    /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.

评论

———————————————— 版权声明:本文为CSDN博主「Raphael620」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cyan_canopus/article/details/88601325  发表于 2023-5-27 11:12
 楼主| lvuu 发表于 2023-5-27 11:14 | 显示全部楼层
66946471757b753cf.png
  1. void LED_GPIO_Config(void){
  2.     /*定义一个 GPIO_InitTypeDef 类型的结构体*/
  3. GPIO_InitTypeDef GPIO_InitStructure;
  4.     /*开启 GPIOC 的外设时钟,emable即使能*/
  5. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
  6.     /*选择要控制的 GPIOC 引脚 */
  7. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 ;
  8.     /*设置引脚模式为通用推挽输出*/
  9. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  10.     /*设置引脚速率为 70MHz */
  11. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_70MHz;
  12.     /*调用库函数,初始化 GPIOC*/
  13. GPIO_Init(GPIOC, &GPIO_InitStructure);
  14.     /* 初始关闭所有 led 灯,Reset 为低电平*/
  15. GPIO_SetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5);}
 楼主| lvuu 发表于 2023-5-27 11:14 | 显示全部楼层
.h文件编写规范

以 led.h 文件为例

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

  3. #endif
 楼主| lvuu 发表于 2023-5-27 11:14 | 显示全部楼层
    引用头文件 #include "stm32f10x.h"
    定义宏
  1. #define ON  0
  2. #define OFF 1
 楼主| lvuu 发表于 2023-5-27 11:14 | 显示全部楼层
定义带参宏以及声明对应 led.c 中的函数
  1. #define LED1(a) if (a)  \
  2.    GPIO_SetBits(GPIOC,GPIO_Pin_3);\
  3. else        \
  4.    GPIO_ResetBits(GPIOC,GPIO_Pin_3)
  5. void LED_GPIO_Config(void);
 楼主| lvuu 发表于 2023-5-27 11:15 | 显示全部楼层
main文件编写

    头文件引用
  1. #include "stm32f10x.h"
  2. #include "led.h"
 楼主| lvuu 发表于 2023-5-27 11:15 | 显示全部楼层
    声明后续函数

void Delay(__IO u32 nCount);
 楼主| lvuu 发表于 2023-5-27 11:15 | 显示全部楼层
main函数编写
  1. int main(void)
  2. {   
  3.     /* LED 端口初始化 */
  4.     LED_GPIO_Config();

  5.     while (1)
  6.     {
  7.         LED1( ON );              // 亮
  8.         Delay(0x0FFFEF);
  9.         LED1( OFF );          // 灭
  10.         
  11.         LED2( ON );
  12.         Delay(0x0FFFEF);
  13.         LED2( OFF );         
  14.    
  15.     }
  16. }
 楼主| lvuu 发表于 2023-5-27 11:15 | 显示全部楼层
delay函数编写
  1. void Delay(__IO u32 nCount)     //简单的延时函数
  2. {
  3.     for(; nCount != 0; nCount--);
  4. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

651

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部