【STM32开发教程】STM32F103RCT6开发板M3单片机教程01--点亮LED

前言

学习单片机开发,最主要的就是动手写代码,操作调试,改代码。
话不多话,开我们的单片机奇妙之旅吧!!!
本教程使用是(光明谷SUN_STM32mini开发板)
在这里插入图片描述

原理图讲解

首先了解LED硬件连接,查看原理图
在这里插入图片描述

得知PA8连接LED阴极,低电平点亮。

接下来开发写代码点亮他吧

新建工程

打开keil软件,找到project,下拉菜单有一项new uvision project。点击这个项目,会出现一个项目路径。

自定义项目名称和保存位置。
选择需要烧代码的单片机芯片的生产公司(ST)相应的芯片型号STM32F103RCT6

点“OK”,新建好了工程。
添加STM32F10x库
新建源文件main.c 并添加到工程中
 /**********************************************************************************
    * Sun STM32 mini Demo
    *   Description       
        LED Flash       
    * Version    Date       Auther      Reversed History
      ----------------------------------------------------------------------------
      V1.0.0    2021-10-20  Lojam Fan  Fisrt Created
      
    * (C) Sunshine Silicon Corporation
    *  Website: http://www.sunsili.com  http://sunsili.taobao.com http://bbs.sunsili.com
    *  E-Mail : fan@sunsili.com
    **********************************************************************************/

    #include "stm32f10x.h"
    #include "Led.h"

    void Delay(u32 dly);

    /*******************************************************************************
    * 函数名  : main
    * 描述    : 主函数,用户程序从main函数开始运行
    * 输入    : 无
    * 输出    : 无
    * 返回值  : int:返回值为一个16位整形数
    * 说明    : 无
    *******************************************************************************/
    int main(void)
    {
        LED_GPIO_Config();        //LED IO配置     

        while (1)
        {
                LED_ON();              //点亮LED.PA8
                Delay(1000000);        //延时
                LED_OFF();             //关闭LED.PA8
                Delay(1000000);        //延时        
        }
    }

    /*******************************************************************************
    * 函数名  : Delay
    * 描述    : 软件延时函数
    * 输入    : dly:32位的整形数
    * 输出    : 无
    * 返回值  : 无
    * 说明    : 无
    *******************************************************************************/
    void Delay(u32 dly)         
    {
            for(; dly > 0; dly--);
    }


    /******************* (C) COPYRIGHT SUNSHINE SILICON  **************************
    ********************        END OF FILE main.c        *******************/

新源头文件led.c led.h 并添加到BSP(Group)
编辑led.c

 /**********************************************************************************
    * 文件名  :led.c
    * 描述    :led 应用函数库 BSP        
    * 实验平台:Sun_STM32Min系统板
    * 硬件连接:   
    *             PA8 -> LED   板子有直接观察
    * GPIO置低电平亮LED

    * 库版本  :ST_v3.5

    * Version    Date       Auther      Reversed History
      ----------------------------------------------------------------------------
      V1.0.0    2021-11-07  Lojam Fan  Fisrt Created
      
    * (C) Sunshine Silicon Corporation
    *  Website: http://www.sunsili.com  http://sunsili.taobao.com http://bbs.sunsili.com
    *  E-Mail : fan@sunsili.com
    **********************************************************************************/

    #include "Led.h"

               
    void LED_GPIO_Config(void)
    {
            GPIO_InitTypeDef  GPIO_InitStructure;                    //定义一个GPIO_InitTypeDef类型的GPIO初始化结构体
            
            RCC_APB2PeriphClockCmd(LED_RCC, ENABLE);                 //使能GPIOB的外设时钟        
            
            GPIO_InitStructure.GPIO_Pin = LED_PIN ;                 //选择要初始化的LED引脚
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //设置引脚工作模式为通用推挽输出                 
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       //设置引脚输出最大速率为50MHz
            GPIO_Init(LED_PORT, &GPIO_InitStructure);               //调用库函数中的GPIO初始化函数,初始化LED引脚

            LED_OFF();                                              //关闭LED                                          
    }

    /*点亮LED.PA8*/
    void LED_ON(void)
    {
        GPIO_ResetBits(LED_PORT, LED_PIN );
    }

    /*关闭LED.PA8*/
    void LED_OFF(void)
    {
        GPIO_SetBits(LED_PORT, LED_PIN );
    }


    /******************* (C) COPYRIGHT SUNSHINE SILICON  **************************
    ********************        END OF FILE led.c        *******************/

编辑led.h

 /**********************************************************************************
    * 文件名  :led.h
    * 描述    :led 应用函数库 BSP        
    * 实验平台:Sun_STM32Min系统板
    * 硬件连接:   
    *             PA8 -> LED   板子有直接观察
    * GPIO置低电平亮LED

    * 库版本  :ST_v3.5

    * Version    Date       Auther      Reversed History
      ----------------------------------------------------------------------------
      V1.0.0    2021-11-07  Lojam Fan  Fisrt Created
      
    * (C) Sunshine Silicon Corporation
    *  Website: http://www.sunsili.com  http://sunsili.taobao.com http://bbs.sunsili.com
    *  E-Mail : fan@sunsili.com
    **********************************************************************************/

    #ifndef __LED_H__
    #define __LED_H__
             
    #include "stm32f10x.h"

    //LED端口定义
    #define LED_RCC     RCC_APB2Periph_GPIOA                           
    #define LED_PORT        GPIOA   
    #define LED_PIN     GPIO_Pin_8   


    void LED_GPIO_Config(void);
    void LED_ON(void);
    void LED_OFF(void);
                                                         
    #endif

    /******************* (C) COPYRIGHT SUNSHINE SILICON  **************************
    ********************        END OF FILE led.h        *******************/

编译工程

编辑好源代码后,保存全部,点"build", 稍等出现如下提示,编译成功,不成话,Keil会给提示,哪里不对,按提示修改代码,保存再编译,直到编译成功。
配置调试Debug(参考阅: keil5使用JLink仿真调试STM32F103C8T6)
我使用用是(ARM仿真器下载器JLINK V9)

ARM仿真器下载器JLINK V9ARM仿真器下载器JLINK V9

ARM仿真器下载器JLINK V9 STM调试器 编程器 不掉固件工程设置(Option)

添加烧录算法

  1. 在开发板上调试
    启动调试((点Debug或按ctrl+F5)

在开发板上运行(点Run或按F5)
课后作业:

改来闪灯频率,改到快到一定时,变成常高
增加闪灯数亮
变换闪灯效果,如流水、交换、慢增长、减少等

工程源码:
01STM32F103RCT6_LED.zip

STM32F103RCT6, 开发板, 单片机教程, 点亮LED

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值