0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32系列MCU,写寄存器Or利用固件库

RTThread物联网操作系统 来源:未知 作者:李倩 2018-08-09 17:22 次阅读

写在开头的话:

最近心血来潮,打算重新捡起老本行,结果发现很多都忘记了。干脆重新开始学习,并做个从零开始的笔记了。

STM32系列MCU

STM32系列芯片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列芯片芯片。不同系列的芯片适用于不同的应用场景。F0/L0基于ARM Cortex®-M0,F1/F2/L1系列基于ARM Cortex®-M3,F3/F4/L4系列基于ARM Cortex®-M4,F7/H7基于ARM Cortex®-M7。L系列表示超低功耗,H表示超高性能(对应就是高功耗了),F就是个折中方案了,性能不错,功耗也不高。

其他的先不管,F1系列芯片主要分类如下:

·超值型STM32F100 - 24 MHz CPU,具有电机控制和CEC功能

·基本型STM32F101 - 36 MHz CPU,具有高达1MB的Flash

·连接型STM32F102 – 48 MHz CPU具备USB FS device接口

·增强型STM32F103 - 72 MHz CPU,具有高达1MB的Flash、电机控制、USB和CAN

·互联型STM32F105/107 - 72 MHz CPU,具有以太网MAC、CAN和USB 2.0 OTG

STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:

具体信息可查阅网站https://www.stmcu.com.cn/。

RTT操作系统

官网的简介:

RT-Thread是一款来自中国的开源嵌入式实时操作系统,由国内一些专业开发人员从2006年开始开发、维护,除了类似FreeRTOSUCOS的实时操作系统内核外,也包括一系列应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统,POSIX接口,图形用户界面,FreeModbus主从协议栈,CAN框架,动态模块等,因为系统稳定,功能丰富的特性被广泛用于新能源,电网,风机等高可靠性行业和设备上,已经被验证是一款高可靠的实时操作系统。RT-Thread实时操作系统遵循GPLv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。

RT-Thread操作系统源码风格与linux一致,在官方提供的源码中,包含有诸多芯片的工程示例,LPC系列和STM32F系列的很多。再者RT-Thread代码开源,又有那么详细的资料,如果遇到官方bsp下没有的芯片,对于动手能力强的同学,自己动手移植也比较方便。而且官方提供了详细的中文文档,对于英语不太好的同学简直就是一个福音。而且,RT-Thread提供了丰富的组件,使用者可以非常方便的实现诸如GUI、网络协议栈、Modbus甚至是SQLite数据库等功能。后续使用的时候再细细体会它的强大之处了。

寄存器Or利用固件库

嵌入式的编程,往下说就是操作MCU的寄存器。而固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API)。相对于固件库的方式,直接写寄存器的代码更为简洁,只需要对指定的寄存器进行需要的操作就可以了,但是对于STM32来说,寄存器多达数百个,记起来也是一件非常让人头疼的事情。ST推出了官方固件库,固件库将这些寄存器底层操作都封装起来,提供一整套接口,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些函数即可。关于写寄存器还是利用固件库去开发哪个好,一直都有争议,只能说存在即为合理,各有各的好处,我个人比较懒,不太喜欢去记那些寄存器都是啥。再者,我也不是专门搞STM32的,要是用写寄存器的方式开发的话,过一段时间不弄,再回来估计又得花些时间对着文档看了。所以在后续的博客,我也都会利用固件库开发。当然,用不用是一回事儿,根据官网技术文档,操作寄存器的方式是必须要会的。个人建议,还是需要学会看硬件文档,看官方的技术资料,而不是遇到问题就百度。学会看官方的技术文档后,遇到问题解决起来将会事半功倍。

点亮LED

点亮LED,首先自然是安装Keil了。当然,使用其他工具也可以,对于我来说,我还是比较钟情于Keil。我现在使用的是Keil5,编译工具链为MDK-ARM v5.24。开发板为淘宝上找的便宜的不能再便宜的一块STM32C8T6开发板,引脚都要自己焊。下载线为ST-Link v2。根据淘宝商提供的硬件资料,这个板子PB12连接了一个LED灯,LED另外一端连接了上拉电阻,即LED在PB12低电平时点亮。

废话不说了,Keil的安装和破解,网上多的是,随便找个教程,走一走就完了。

第一步,创建工程

打开Keil后,首先需要创建个工程。点击project->New μVision Project。

填写工程名

选择芯片,如果没有你要的芯片,就需要到官网上去下载,然后安装。

选择需要用到的功能,Core、Startup和GPIO,可以看到下面有警告,GPIO依赖FrameWork和RCC,也要去勾选上就好了。

然后确定,工程就创建成功了。

第二步,增加main.c文件到工程中

点击如下按钮,创建一个新文件,并保存文件到工程目录中。

点击工程管理按钮,管理工程

点击Add Files 把main.c加入到Source Group 1下,Target 1和Source Group 1都可以修改,改成一个合适的名字。

第三部,编写main.c 文件

#include"stm32f10x.h"

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23128

    浏览量

    658248
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16977

    浏览量

    350214
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354689

原文标题:STM32F103+RT-Thread从零开始(一)——点亮LED

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32使用固件还是直接寄存器编程

    最近看到初学者对于STM32是使用固件编程还是使用直接操作寄存器编程之间犹豫不决,现在自己也困惑其中。固件
    发表于 09-17 23:06

    STM32固件使用手册,STM32寄存器资料

    STM32寄存器资料,现在好多人都不调用ST的来写程序,喜欢底层操作,底层寄存器操作就一定要了解寄存器怎么使用,这资料少不了,有需要的也可
    发表于 07-25 12:34

    怎么把寄存器编程封装成固件编程

    基于野火“霸道”和“指南”——零死角玩转STM32入门&中级篇学习地址:课程简介:本课程从STM32内存映射开始讲起,告诉你什么是寄存器,怎么样实现寄存器编程,然后怎么把
    发表于 08-03 06:47

    基于寄存器固件stm32 LED流水灯实例分享

    基于寄存器固件stm32 LED流水灯实例分享
    发表于 12-02 06:10

    基于固件寄存器stm32程序编写的区别

    一、基于固件寄存器stm32程序编写的区别1.基于固件
    发表于 01-18 09:25

    寄存器固件STM32的串口通讯介绍

    文章目录寄存器固件STM32的串口通讯1、程序2、硬件总结寄存器固件
    发表于 02-10 07:24

    基于寄存器与基于固件编程方式的差异

    stm32f103核心板串口通信入门一、 基于寄存器与基于固件编程方式的差异二、stm32串口通信1. 前期准备硬件软件连接2.编写程序并
    发表于 02-11 07:35

    如何用STM32固件来建立工程

    这节课主要给朋友们讲解以下这几个方面的内容: 1:如何学习 STM32 单片机; 2:STM32 的开发是用固件,还是用直接操作寄存器
    发表于 11-11 17:17 29次下载

    STM32 BSRR BRR ODR寄存器详情解析

    BSRR 和 BRR 都是 STM32 系列 MCU 中 GPIO 的寄存器。 BSRR 称为端口位设置/清楚寄存器,BRR称为端口位**
    发表于 11-13 09:54 1.2w次阅读

    STM32库函数和寄存器应该如何操作

    ,32系列寄存器无论是个数还是实现功能时多个寄存器之间的调用配合,使用难度都高了不少,所以有了库函数和相应的固件来减少难度。先说一下
    发表于 09-10 17:26 3次下载
    <b class='flag-5'>STM32</b>库函数和<b class='flag-5'>寄存器</b>应该如何操作

    STM32四种对比:寄存器、标准外设、HAL、LL

    1.我是选择寄存器开发STM32,还是标准外设呢? 2.你有STM32L0标准外设吗? 3.HAL
    发表于 03-05 06:17 50次下载
    <b class='flag-5'>STM32</b>四种<b class='flag-5'>库</b>对比:<b class='flag-5'>寄存器</b>、标准外设<b class='flag-5'>库</b>、HAL、LL

    STM32学习记录——固件目录及文件介绍

    工程,需要先准备STM32芯片提供的库函数,包括启动的汇编文件,STM32寄存器宏定义,内核以及外设的寄存器操作函数等,按照以下目录结构放置相应ST
    发表于 12-02 13:06 13次下载
    <b class='flag-5'>STM32</b>学习记录——<b class='flag-5'>固件</b><b class='flag-5'>库</b>目录及文件介绍

    STM32学习笔记(2)——寄存器

    。计算机领域,包括通用寄存器、专用寄存器和控制寄存器寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。我们一般控制其中的控制
    发表于 12-08 17:36 18次下载
    <b class='flag-5'>STM32</b>学习笔记(2)——<b class='flag-5'>寄存器</b>

    STM32的USART串口通信(指令控制RGB彩灯)

    这里目录标题一、寄存器与基于固件stm32 LED流水灯的差异二、STM32的USART窗
    发表于 12-24 18:56 6次下载
    <b class='flag-5'>STM32</b>的USART串口通信(指令控制RGB彩灯)

    寄存器与静态

    实现初始化时钟LED灯初始化LED灯闪烁三、库函数例程0.准备阶段1.目标任务拆分2.目标实现初始化时钟LED灯初始化LED灯闪烁两者比较前言读者在学习8位单片机时是否经历过记忆大量寄存器的经历呢?在STM32中具有更多的寄存器
    发表于 01-13 12:43 3次下载
    <b class='flag-5'>寄存器</b>与静态<b class='flag-5'>库</b>