查看: 2650|回复: 6

【STM32F4探索套件】序列之8 ST官网高精简程序

[复制链接]
  • TA的每日心情
    开心
    2019-6-24 16:41
  • 签到天数: 709 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-8-20 11:12:02 | 显示全部楼层 |阅读模式
    分享到:
    本节我们将从硬件原理图、软件编写和下载验证3部分来分析,主要是从下面3个方面进行讲解:
    1.硬件原理图
    2.软件编写
    3.下载验证
    一、硬件原理图
    硬件原理图很简单,在本序列的跑马灯里面就有。这里就不作过多的介绍。
    下面主要看的是STM32F4探索套件的LED灯部分的原理图。

    从上面的原理可以看见,很简单,只要给一个高电平LED就会亮,这就不多讲了。STM32F4探索套件就是两个用户LED灯,LED3LED4一个位绿色,一个为红色。
    二、软件编写
    在写程序的时候,首先按一下步骤检查是否已经完备。
    1.确保JP3CN4跳线是连接的【Discovery模式】。
    2.通过Min USB把开发板和电脑连接,USB供电。
    3.通过ST-Link/V2来下载程序。
    4.检查USB通讯的LED1灯是否亮,电源灯LED2是否亮(3.3v)
    5.以上正常就可以进行下面的工作了。
    这个是官网的一个精简的代码,没有使用ST的库,是寄存器操作的,大家可以参考,效率的确很高。不多说,先上主程序,完整程序在附件里面。
    #include "STM32F4xx.h"
    #include "LED.h"
    const unsigned long led_mask[] = {1UL << 13, 1UL << 14};
    void LED_Init (void) {
    RCC->AHB1ENR  |= (1UL << 6);           /* Enable GPIOG clock             */
            /* Configure LED (PG13, PG148) pins as push-pull outputs */
    GPIOG->MODER  &= ~((3UL << 2 * 13) | (3UL << 2 * 14));
    GPIOG->MODER  |=   (1UL << 2 * 13) | (1UL << 2 * 14);
    GPIOG->OTYPER &= ~((1UL <<     6) | (1UL <<     8));
    }
    /*----------------------------------------------------------------------------
      Function that turns on requested LED
    *----------------------------------------------------------------------------*/
    void LED_On (unsigned int num) {
      if (num < LED_NUM) {
        GPIOG->BSRRL = led_mask[num];
      }
    }
    /*----------------------------------------------------------------------------
      Function that turns off requested LED
    *----------------------------------------------------------------------------*/
    void LED_Off (unsigned int num) {
      if (num < LED_NUM) {
        GPIOG->BSRRH = led_mask[num];
      }
    }
    /*----------------------------------------------------------------------------
      Function that outputs value to LEDs
    *----------------------------------------------------------------------------*/
    void LED_Out(unsigned int value) {
      int i;
      for (i = 0; i < LED_NUM; i++) {
        if (value & (1<<i)) {
          LED_On (i);
        } else {
          LED_Off(i);
        }
      }
    }
    是不是很精简啊。
    三、下载验证



    完整程序下载:
    ST精简LED灯代码.zip (40 KB, 下载次数: 4)

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-8-20 21:00:45 | 显示全部楼层
    非常好的教程
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 16:41
  • 签到天数: 709 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2014-8-21 15:06:38 | 显示全部楼层
    奋斗哥 发表于 2014-8-20 21:00
    非常好的教程

      谢谢 欢迎常来哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-3-24 10:15
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2014-12-8 12:22:02 | 显示全部楼层
    不错 太好太好 喜欢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 16:41
  • 签到天数: 709 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2014-12-8 21:12:27 | 显示全部楼层
    飞翔-396652 发表于 2014-12-8 12:22
    不错 太好太好 喜欢

       欢迎啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-1 10:07
  • 签到天数: 1617 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2014-12-8 22:45:58 | 显示全部楼层
    精简的代码,容易懂,方便用,大家都喜欢。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 16:41
  • 签到天数: 709 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2014-12-9 08:23:53 | 显示全部楼层
    shaoziyang 发表于 2014-12-8 22:45
    精简的代码,容易懂,方便用,大家都喜欢。

    是的      
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 13:47 , Processed in 0.162116 second(s), 27 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.