找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4572|回复: 2
打印 上一主题 下一主题
收起左侧

STM32 LED八进制灯全套资料(系统板、原理图、GPIO、空指令延时)

[复制链接]
跳转到指定楼层
楼主
1、中断方案

三个定时器的中断服务程序各自负责一个LED

2、main方案

依据八进制真值表进行三个LED灯的亮灭切换


ppt教程:


1、了解STM32最小系统板的软硬件组成。
2、考察C代码阅读能力、掌握C函数编写。
3、掌握嵌入式开发的单步跟踪调试、实时变量查看。
4、掌握开关LED的GPIO编程实现。
5、掌握基于空指令延时的LED跑马灯编程实现。
1、阅读STM32系统板原理图,找到最小系统板的几个组成部分,以及LED、KEY和UART扩展电路。
2、安装Keil ARM开发软件,根据《问题汇总》解决遇到问题,注意SWD仿真器的选择、STM32 Flash的配置。
3、针对示例代码,进行源码编译、程序下载、断点设置、单步调试、全速运行,注意区分compile&build、load&debug。
    (思考题:AddWatch可以查看变量值,但如何通过内存地址查看变量值呢?)
4、编写程序,实现LedInit、SetLedOn、SetLedOff函数,注意单片机Main主函数的初始化部分和主体功能循环部分。
5、编写程序,实现MyDelay延时函数。
6、编写程序,实现LED跑马灯,或八进制灯(可选)。
7、提高:阅读STM32原理图,找到特殊的LED4和KEY4,借助杜邦线连接LED4和STM32芯片的某个GPIO管脚,并在Keil环境编程,实现对LED4的亮灭控制。

GPIO-流水灯-使用库函数stm32单片机源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2018-xx-xx
  7.   * @brief   测试led
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   ******************************************************************************
  12.   */
  13.         
  14. #include "stm32f10x.h"
  15. #include "bsp_led.h"

  16. void Delay(__IO u32 nCount);

  17. /**
  18.   * @brief  主函数
  19.   * @param  无  
  20.   * @retval 无
  21.   */
  22. int main(void)
  23. {        
  24.         /* LED 端口初始化 */
  25.         LED_GPIO_Config();         

  26.         /* 方法2,使用固件库控制IO */
  27.         while (1)
  28.         {
  29.                 LED1( ON );                          // 亮
  30.                 Delay(0x0FFFFF);
  31.                 LED1( OFF );                  // 灭

  32.                 LED2( ON );                          // 亮
  33.                 Delay(0x0FFFFF);
  34.                 LED2( OFF );                  // 灭

  35.                 LED3( ON );                          // 亮
  36.                 Delay(0x0FFFFF);
  37.                 LED3( OFF );                  // 灭           
  38.         }

  39. }

  40. void Delay(__IO uint32_t nCount)         //简单的延时函数
  41. {
  42.         for(; nCount != 0; nCount--);
  43. }
  44. /*********************************************END OF FILE**********************/
复制代码

GPIO-流水灯-直接操作寄存器:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   测试led
  8.   ******************************************************************************
  9.   * @attention
  10.   ******************************************************************************
  11.   */  
  12. #include "stm32f10x.h"
  13. #include "bsp_led.h"

  14. void Delay(__IO u32 nCount);

  15. /**
  16.   * @brief  主函数
  17.   * @param  无  
  18.   * @retval 无
  19.   */
  20. int main(void)
  21. {        
  22.         /* LED 端口初始化 */
  23.         LED_GPIO_Config();         

  24.         /* 方法1,直接控制寄存器 */
  25.         while(1)
  26.         {
  27.                 // ODR GPIOB
  28.                 // 15 14 13 12     11 10 9 8    7 6 5 4    3 2 1 0
  29.                 // 0  0  0  0      0  0  0 0    0 0 0 0    0 0 0 0 (复位值)
  30.                 // 1  1  1  1      1  1  1 1    1 1 1 1    1 1 1 0

  31.                 GPIOB->ODR = 0XFFFE;                 //低电平,GPIOB0(LED0)灯亮
  32.                 Delay(0x0FFFFF);
  33.                 GPIOB->ODR = 0XFFFF;                //高电平,GPIOB0(LED0)灯灭

  34.                 // ODR GPIOC
  35.                 // 15 14 13 12     11 10 9 8    7 6 5 4    3 2 1 0
  36.                 // 0  0  0  0      0  0  0 0    0 0 0 0    0 0 0 0 (复位值)
  37.                 // 1  1  1  1      1  1  1 1    1 1 1 0    1 1 1 1        
  38.                 GPIOC->ODR = 0XFFEF;                 //低电平,GPIOC4(LED1)灯亮
  39.                 Delay(0x0FFFFF);
  40.    
  41.                 GPIOC->ODR = 0XFFFF;                //高电平,GPIOC4(LED1)灯亮

  42.                 // ODR GPIOC
  43.                 // 15 14 13 12     11 10 9 8    7 6 5 4    3 2 1 0
  44.                 // 0  0  0  0      0  0  0 0    0 0 0 0    0 0 0 0 (复位值)
  45.                 // 1  1  1  1      1  1  1 1    1 1 1 1    0 1 1 1                        
  46.                 GPIOC->ODR = 0XFFf7;                 //低电平,GPIOC5(LED2)灯亮
  47.                 Delay(0x0FFFFF);
  48.                 GPIOC->ODR = 0XFFFF;                //高电平,GPIOC5(LED2)灯亮
  49.         }
  50. }

  51. void Delay(__IO uint32_t nCount)         //简单的延时函数
  52. {
  53.         for(; nCount != 0; nCount--);
  54. }
  55. /*********************************************END OF FILE**********************/
复制代码

GPIO-流水灯-自定义宏操作
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   测试led
  8. #include "stm32f10x.h"
  9. #include "bsp_led.h"

  10. void Delay(__IO u32 nCount);

  11. /**
  12.   * @brief  主函数
  13.   * @param  无  
  14.   * @retval 无
  15.   */
  16. int main(void)
  17. {        
  18.         /* LED 端口初始化 */
  19.         LED_GPIO_Config();         

  20.         /* 方法3,使用寄存器控制IO */
  21.         while(1)
  22.         {

  23.                 LED1_TOGGLE;                                 //led1状态反转,亮        
  24.     Delay(0x0FFFFF);
  25.                 LED1_TOGGLE;                                //led1状态反转,灭

  26.                 LED2_TOGGLE;                                //led2状态反转,亮
  27.                 Delay(0x0FFFFF);           
  28.                 LED2_TOGGLE;                          //led2状态反转,灭

  29.                 LED3_TOGGLE;                                //led3状态反转,亮
  30.                 Delay(0x0FFFFF);
  31.                 LED3_TOGGLE;                                //led3状态反转,灭
  32.         }
  33. }

  34. void Delay(__IO uint32_t nCount)         //简单的延时函数
  35. {
  36.         for(; nCount != 0; nCount--);
  37. }
  38. /*********************************************END OF FILE**********************/
复制代码




所有资料51hei提供下载:
LED八进制灯(系统板、原理图、GPIO、空指令延时).zip (1.88 MB, 下载次数: 30)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:243748 发表于 2017-12-26 08:23 来自手机 | 只看该作者
很好的学习资料,谢谢分享
回复

使用道具 举报

板凳
ID:63317 发表于 2020-11-7 11:50 | 只看该作者
很好的学习资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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