谷动谷力

 找回密码
 立即注册
谷动谷力 门户 查看主题

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

发布者: sunsili | 发布时间: 2021-10-31 23:30| 查看数: 6190| 评论数: 10|帖子模式

本帖最后由 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 并添加到工程中
    1. /**********************************************************************************
    2. * Sun STM32 mini Demo

    3. *   Description
    4.    
    5.     LED Flash

    6.    
    7. * Version    Date       Auther      Reversed History
    8.   ----------------------------------------------------------------------------
    9.   V1.0.0    2021-10-20  Lojam Fan  Fisrt Created
    10.   
    11. * (C) Sunshine Silicon Corporation
    12. *  Website: http://www.sunsili.com  http://sunsili.taobao.com http://bbs.sunsili.com
    13. *  E-Mail : fan@sunsili.com

    14. **********************************************************************************/

    15. #include "stm32f10x.h"
    16. #include "Led.h"

    17. void Delay(u32 dly);

    18. /*******************************************************************************
    19. * 函数名  : main
    20. * 描述    : 主函数,用户程序从main函数开始运行
    21. * 输入    : 无
    22. * 输出    : 无
    23. * 返回值  : int:返回值为一个16位整形数
    24. * 说明    : 无
    25. *******************************************************************************/
    26. int main(void)
    27. {
    28.     LED_GPIO_Config();        //LED IO配置
    29.   

    30.     while (1)
    31.     {
    32.             LED_ON();              //点亮LED.PA8
    33.             Delay(1000000);        //延时
    34.             LED_OFF();             //关闭LED.PA8
    35.             Delay(1000000);        //延时        
    36.     }
    37. }

    38. /*******************************************************************************
    39. * 函数名  : Delay
    40. * 描述    : 软件延时函数
    41. * 输入    : dly:32位的整形数
    42. * 输出    : 无
    43. * 返回值  : 无
    44. * 说明    : 无
    45. *******************************************************************************/
    46. void Delay(u32 dly)         
    47. {
    48.         for(; dly > 0; dly--);
    49. }



    50. /******************* (C) COPYRIGHT SUNSHINE SILICON  **************************
    51. ********************        END OF FILE main.c        *******************/
    复制代码

  • 新源头文件led.c led.h 并添加到BSP(Group)
    编辑led.c
    1. /**********************************************************************************
    2. * 文件名  :led.c
    3. * 描述    :led 应用函数库 BSP        
    4. * 实验平台:Sun_STM32Min系统板
    5. * 硬件连接:   
    6. *             PA8 -> LED   板子有直接观察
    7. * GPIO置低电平亮LED

    8. * 库版本  :ST_v3.5

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

    17. #include "Led.h"

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

    29.         LED_OFF();                                              //关闭LED                                          
    30. }

    31. /*点亮LED.PA8*/
    32. void LED_ON(void)
    33. {
    34.     GPIO_ResetBits(LED_PORT, LED_PIN );
    35. }

    36. /*关闭LED.PA8*/
    37. void LED_OFF(void)
    38. {
    39.     GPIO_SetBits(LED_PORT, LED_PIN );
    40. }


    41. /******************* (C) COPYRIGHT SUNSHINE SILICON  **************************
    42. ********************        END OF FILE led.c        *******************/
    复制代码


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

    8. * 库版本  :ST_v3.5

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

    17. #ifndef __LED_H__
    18. #define __LED_H__
    19.          
    20. #include "stm32f10x.h"

    21. //LED端口定义
    22. #define LED_RCC     RCC_APB2Periph_GPIOA                           
    23. #define LED_PORT        GPIOA   
    24. #define LED_PIN     GPIO_Pin_8   


    25. void LED_GPIO_Config(void);
    26. void LED_ON(void);
    27. void LED_OFF(void);
    28.                                                      
    29. #endif

    30. /******************* (C) COPYRIGHT SUNSHINE SILICON  **************************
    31. ********************        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)
课后作业:
  • 改来闪灯频率,改到快到一定时,变成常高
  • 增加闪灯数亮
  • 变换闪灯效果,如流水、交换、慢增长、减少等

工程源码:(回复可下载)
游客,如果您要查看本帖隐藏内容请回复

最新评论

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 发表于 2024-11-11 10:40:38
123123213213123
asdasd 发表于 2024-11-11 10:43:08
BUCUOBUCUOBUCUOCBUCUIO

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-11-24 14:31 , Processed in 0.312195 second(s), 72 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表