STM32 点亮 LED

本贴最后更新于 2591 天前,其中的信息可能已经东海扬尘

笔者现在大二,刚刚开学,正在学 STM32,以下是笔者入门的第一个例程(如题)

因为,从大一开始就自学 Java,这个博客就是我用 Java 写的,所以对 Eclipse 比较熟悉,之前学 51 单片机时用的是 keil,感觉那玩意儿不适合我,快捷键没有 Eclipse 的用着舒服。所以在 STM32 的开发环境上我果断用 Eclipse。官方推荐的 sw4stm32,其实就是 eclipse,为了方便我就直接下载了 Linux 版的 sw4stm32。好了废话不多说直接上代码。

首先新建一个项目

新建工程

选择 C 项目,然后下一步选择:AC6 STM32 MCU PROJECT。然后继续下一步

选择 c 项目

经过一下界面,选择 STM32 的型号,由于我的板子是正点原子 mini 版 STM32F103RCT6,所以在划红线的地方选择相应的型号即可,很方便。

204549png

型号选好后就选择库,我选择的是划红线的标准库选择之前需要下载,下载固件库也很简单,就不一一说明。

204758png

如下图所示:

205434png

在写代码之前先在 src 目录下建立 led 目录,分别建立 led.c 和 led.h 文件。下面就正式写代码:

led.h

/*  * led.h  *      Author: Today  */ #ifndef LED_LED_H_ #define LED_LED_H_ //定义要点亮的led所在的pin口 #define LED (GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12 |GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8) void LED_Init(void)//定义led的初始化函数 #endif

led.c:

#include "led.h" #include <stm32f10x.h> #include <stm32f10x_gpio.h> #include <stm32f10x_rcc.h> void LED_Init()//初始化函数实现 {     GPIO_InitTypeDef GPIO_Init_type;     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //io口时钟使能     GPIO_Init_type.GPIO_Mode         = GPIO_Mode_Out_PP;    //设置GPIO模式:推挽输出     GPIO_Init_type.GPIO_Pin          = LED;                 //选择输出口     GPIO_Init_type.GPIO_Speed        = GPIO_Speed_50MHz;    //设置输出速度     GPIO_Init(GPIOB, &GPIO_Init_type);//初始化 }

main.c

/**   ******************************************************************************   * @file    main.c   * @author  Today   * @version V1.0   * @date    01-December-2013   * @brief   Default main function.   ******************************************************************************   */ #include <stm32f10x.h> #include <stm32f10x_gpio.h> #include "led/led.h" int main(void) {     LED_Init();     while(1)     {         GPIO_WriteBit(GPIOB,LED,(BitAction)0);//LED公共端:VCC     } }

ctrl + F11 直接运行 ,成功点亮 !

211722jpg

总结

学习 STM32 感觉和 Java 差不多,C 语言的结构体和 Java 的类有点类似,所以在我学习 STM32 会更加简单。在点亮 LED 的过程中几乎没有难度,建工程比起 KEIL MDK 真的很快,所以我很推荐大家使用 sw4stm32 。

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1062 引用 • 3455 回帖 • 149 关注
  • STM32

    STM32 系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的 ARM Cortex®-M0,M0+,M3, M4 和 M7 内核。按内核架构分为不同产品: 主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)

    9 引用 • 2 回帖 • 1 关注
  • 单片机
    16 引用 • 6 回帖
  • 电子
    4 引用 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    415 引用 • 3596 回帖 • 1 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 631 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10124 引用 • 46011 回帖 • 63 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 734 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 233 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8217 回帖 • 1 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 9 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 8 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    29 引用 • 230 回帖 • 122 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 543 回帖 • 1 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 1 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    100 引用 • 905 回帖 • 1 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 2 关注
  • 电影

    这是一个不能说的秘密。

    123 引用 • 608 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 641 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    291 引用 • 4495 回帖 • 663 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 643 关注
  • OneDrive
    2 引用 • 5 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖 • 1 关注
  • 印象笔记
    3 引用 • 16 回帖 • 1 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    694 引用 • 537 回帖 • 1 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 66 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 224 关注