谷动谷力

 找回密码
 立即注册
谷动谷力 首页 嵌入式 查看内容

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

2021-11-7 22:57| 发布者: admin| 查看: 142| 评论: 1|原作者: sunsili

摘要: STM32F103RCT6开发板M3单片机教程01--点亮LED 学习单片机开发,最主要的就是动手写代码,操作调试,改代码。 话不多话,开我们的单片机奇妙之旅吧!!! 本教程使用是(光明谷SUN_STM32mini开发板) 首先了解LED硬 ...
STM32F103RCT6开发板M3单片机教程01--点亮LED

学习单片机开发,最主要的就是动手写代码,操作调试,改代码。
话不多话,开我们的单片机奇妙之旅吧!!!
本教程使用是(光明谷SUN_STM32mini开发板
STM32F103RCT6_IO.JPG
首先了解LED硬件连接,查看原理图
stm32LEDsch.png
得知PA8连接LED阴极,低电平点亮。

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


  • 新建工程
    打开keil软件,找到project,下拉菜单有一项new uvision project。点击这个项目,会出现一个项目路径。
    newpjt.JPG
    new.JPG
    自定义项目名称和保存位置。
    选择需要烧代码的单片机芯片的生产公司(ST)相应的芯片型号STM32F103RCT6
    slc_mcu.JPG
    slc_mcu_ST.JPG
    点“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. }
    复制代码

  • 新建源文件led.c,建代码Grounp-〉BSP,添加led.c到BSP(Grounp)
    1. /**********************************************************************************
    2. * 文件名  :led.c
    3. * 描述    :led 应用函数库         
    4. * 实验平台:SunMINI STM32F103RCT6开发板
    5. * 硬件连接:  PB5 -> LED1     
    6. *             PB6 -> LED2     
    7. *             PB7 -> LED3   
    8. *             PB8 -> LED3   
    9. * 库版本  :ST_v3.5
    10. **********************************************************************************/

    11. #include "Led.h"
    12.            
    13. /*******************************************************************************
    14. * 函数名  : LED_GPIO_Config
    15. * 描述    : LED IO配置
    16. * 输入    : 无
    17. * 输出    : 无
    18. * 返回    : 无
    19. * 说明    : LED(1~4)的IO口分别是:PB5,PB6,PB7,PB8
    20. *******************************************************************************/
    21. void LED_GPIO_Config(void)
    22. {
    23.         GPIO_InitTypeDef  GPIO_InitStructure;                                //定义一个GPIO_InitTypeDef类型的GPIO初始化结构体
    24.         
    25.         RCC_APB2PeriphClockCmd(LED_RCC, ENABLE);                        //使能GPIOB的外设时钟        
    26.         
    27.         GPIO_InitStructure.GPIO_Pin = LED;                                    //选择要初始化的GPIOB引脚(PB5,PB6,PB7,PB8)
    28.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //设置引脚工作模式为通用推挽输出                 
    29.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //设置引脚输出最大速率为50MHz
    30.         GPIO_Init(LED_PORT, &GPIO_InitStructure);                        //调用库函数中的GPIO初始化函数,初始化GPIOB中的PB5,PB6,PB7,PB8引脚

    31.         LED_OFF();                                                                                //关闭LED                                          
    32. }

    33. /*点亮LED.PA8*/
    34. void LED_ON(void)
    35. {
    36. //        GPIO_SetBits(LED_PORT,LED);
    37.     GPIO_SetBits(GPIO_LED);
    38. }

    39. /*关闭LED.PA8*/
    40. void LED_OFF(void)
    41. {
    42. //        GPIO_ResetBits(LED_PORT,LED);
    43.     GPIO_ResetBits(GPIO_LED);
    44. }

    复制代码

  • 新源头文件led.h
    1. #ifndef __LED_H__
    2. #define __LED_H__
    3.          
    4. #include "stm32f10x.h"

    5. //LED端口定义
    6. #define LED_RCC     RCC_APB2Periph_GPIOA                           
    7. #define LED_PORT        GPIOA   
    8. #define LED         GPIO_Pin_8   
    9. #define GPIO_LED    GPIOA, GPIO_Pin_8

    10. void LED_GPIO_Config(void);
    11. void LED_ON(void);
    12. void LED_OFF(void);                                                     
    13. #endif
    复制代码

  • 编译工程
    编辑好源代码后,保存全部,点"build", 稍等出现如下提示,编译成功,不成话,Keil会给提示,哪里不对,按提示修改代码,保存再编译,直到编译成功。
    build.JPG
  • 配置调试Debug(参考阅: keil5使用JLink仿真调试STM32F103C8T6
    我使用用是(ARM仿真器下载器JLINK V9
    [url=][/url]
    ARM仿真器下载器JLINK V9 STM调试器 编程器 不掉固件工程设置(Option)
Jlink_set.JPG
添加烧录算法
Jlink_setDown.JPG
Jlink_setDownU.JPG8. 在开发板上调试
启动调试((点Debug或按ctrl+F5)
jlinkdebug.png
在开发板上运行(点Run或按F5)jlinkdebug_run.JPG
课后作业:
  • 改来闪灯频率,改到快到一定时,变成常高
  • 增加闪灯数亮
  • 变换闪灯效果,如流水、交换、慢增长、减少等

工程源码:


[attach]275[/attach]








鲜花

握手

雷人

路过

鸡蛋

相关阅读

发表评论

最新评论

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

查看全部评论(1)

最新热点

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

GMT+8, 2023-12-7 22:25 , Processed in 0.096782 second(s), 37 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

返回顶部