sunsili 发表于 2021-10-31 23:30:26

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

本帖最后由 sunsili 于 2023-12-11 22:28 编辑

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


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



原理图讲解

首先了解LED硬件连接,查看原理图

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

程序设计

硬件准备:用短路帽短接J3
PA8 低电平时,可点亮LED2, 高电平则灭。
让LED亮1s,灭1s, 实现LED2频率为0.5Hz闪烁
接下来开发写代码点亮他吧

编写代码


[*]新建工程
打开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-20Lojam FanFisrt Created

* (C) Sunshine Silicon Corporation
*Website: http://www.sunsili.comhttp://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-07Lojam FanFisrt Created

* (C) Sunshine Silicon Corporation
*Website: http://www.sunsili.comhttp://sunsili.taobao.com http://bbs.sunsili.com
*E-Mail : fan@sunsili.com
**********************************************************************************/

#include "Led.h"

         
void LED_GPIO_Config(void)
{
      GPIO_InitTypeDefGPIO_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-07Lojam FanFisrt Created

* (C) Sunshine Silicon Corporation
*Website: http://www.sunsili.comhttp://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 V9 STM调试器 编程器 不掉固件工程设置(Option)

添加烧录算法

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

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

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

工程源码:(回复可下载)
**** Hidden Message *****

sunsili 发表于 2021-12-17 01:02:27

STM32F103RCT6开发板购买(可用积分换取,免费的,真的不用钱) STM32F103RCT6开发板M3单片机核芯小系统板学习板 ...

啦啦啦 发表于 2024-1-16 16:46:36

回复haohaohaohaoahoa

h_K11t1 发表于 2024-1-24 13:44:27

STM32F103RCT6单片机

rehuosheng 发表于 2024-3-12 11:08:37

谢谢分享!

aasacqwfas 发表于 2024-3-30 16:56:47

666.拿走了,谢谢哈

TiAmoXQ 发表于 2024-4-18 11:37:41

mianfiehuoqu

xl123 发表于 2024-4-19 09:45:33

好好好豪豪豪豪豪豪豪豪

ccc1994 发表于 2024-4-27 17:25:40

不错,例程很有用的

asdasd 发表于 7 天前

123123213213123

asdasd 发表于 7 天前

BUCUOBUCUOBUCUOCBUCUIO
页: [1]
查看完整版本: STM32F103RCT6开发板M3单片机教程01--点亮LED