STM32CubeIDE + HAL + STM32f103C8T6 系列教程1 ---板载PC13LED闪烁

这篇具有很好参考价值的文章主要介绍了STM32CubeIDE + HAL + STM32f103C8T6 系列教程1 ---板载PC13LED闪烁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

之前的系列教程都是基于Arduino的,但是公司招聘51和stm32的开发还是多些,所以特别开了一个stm32的系列。这个系列特点是注重了Arduino编程思维和习惯下向STM32开发的过渡。前期没有涉及到太多寄存器相关的知识,利用HAL库和STM32CubeIDE快速入手STM32的数字输入/输出、模拟输入/输出及相关简单的项目应用,计划每个小的项目渗透一点相关的寄存器知识,潜移默化的过渡到底层硬件开发。并选用了麻雀虽小但五脏俱全且价格及其亲民的十元左右的BULLPILL(STM32f103C8T6)。之前Arduino实验中用的外接器件也都可以用到本教程中。从学习难度和硬件购买两方面大大降低了学习门槛。

硬件

  • STM32f103C8T6 (BULLPILL) *1块 ----- 未焊引脚十元左右
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库
  • STLINK V2 *1 ----- 10元左右1
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

关于开发板2

控制器

芯片 STM32F103C8T6
制造商 ST-Microelectronics
内核 Arm Cortex-M3
最高时钟频率 72MHz
封装 LQFP48pins

内置存储器

FLASH 64KB
SRAM 20KB

Tips:
1.下图所示的5V引脚和USB口的5V在电路板中是直接连在一起的,他们之间没有任何保护电路,所以不要对USB和5V同时供电。
The +5V pins on this board are directly connected to the +5V pin of the USB connector. There is no protection in place. Do not power this board through USB and an external power supply at the same time.
stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库
2.有时候板子的D+引脚的读数不对,造成这个的原因可能是其连接的电阻阻值不对,更换为1.5KΩ即可。
This board may have a wrong value of resistor on the USB D+ pin. Instead of a 1.5kΩ it has either a 10kΩ or 4.7kΩ resistor. This can be solved by replacing the resistor with the right value.
3.这个板子名称源于论坛,灵感来自《骇客帝国》
This board got its name from a forum post at the STM32duino forums and is a reference to the movie The Matrix

原理图

stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

硬件连线

硬件连接表

STM32 STLINK V2
3.3V 3.3V
SWDIO SWDIO
SWCLK SWCLK
GND GND

硬件连线图

stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

软件

之前做STM32的开发使用的STM32CubeMX+Keil5的方式,其中比较不方便的部分就是Keil其实是需要破解的。开发过程会分段,感觉对新手还是不太友好。前几天看到一个博主做了STM32CubeIDE的教程,照着试了下,直呼真香。手里随便一块板子很快就能实现版在等闪烁。简单、直接、免费~ 而且代码开发还支持代码自动补全~ 再次感叹真香~ 哈哈哈。据说支持第三方插件。
stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

STM32CubeIDE下载及安装

下面这个帖子写的很详细,这个部分没什么难度所以不重复写了。
STM32CubeIDE下载安装教程: 3

Stm32CubeIDE设置补全快捷键和主题

Stm32CubeIDE设置补全快捷键和主题:4
https://blog.csdn.net/u014627020/article/details/117444089

新建一个工程

  • "File"—>"new"—>"STM32Project"
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

选择开发板核心芯片型号

第一步:选择”STM32103C8T6“
第二步:在右下方的表格中选中相应的型号
第三步:点击”next“
stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

设置工程相关参数

stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库
stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

STM32CubeMX配置

  • 在显示的芯片图中,鼠标左键点击"PC13"引脚。在弹出的菜单中选择"GPIO_OutPut"。这时引脚就会变成绿色。
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库
  • 生成工程代码
    "Project"—>"Generate Code"
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库
    在弹出的对画框中点击就"Yes",稍等就可以自动生成全部工程代码。(要知道在07、08年的时候,一个工程文件的建立难倒多少英雄汉呀。。现在竟然这么便捷了
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

板载灯PC13LED闪烁代码

STM32程序和Arduino代码对比

代码大致结构对比

打开的代码中可以看大main.c文件中64-99行其实是主函数的入口。其中如图所示,是上面的部分相当于Arduino中的SetUp,下面的部分相当于Arduino中的loop。因为已经在上面的cubeMx中配置好了引脚的状态。所以和Arduino中不同,此处就不需要在SetUp中添加PinMode(D4,OutPut)这样的语句了。那么控制灯闪烁的代码添加在下面这个while(1)中就可以了其实根据c语言中所学的基础,我们可以知道while(1)本身就是条件永远为true的死循环。它一定是一直执行的.

stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

库函数调用对比

Arduino:digitalWrite(D4, HIGH);
STM32: HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13, GPIO_PIN_SET);

  • 函数名不同
  • 函数传参不同
    本实例中板载灯为PC13,所以第一个参数应该为GPIOC,第二个参数为13,第三个参数为1.完整写出来就是

HAL_GPIO_WritePin`(GPIOC, GPIO_PIN_13, 1);

stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

  • 同理如果是PA4引脚代码就应该替换为:

HAL_GPIO_WritePin`(GPIOA, GPIO_PIN_4, 1);

闪烁代码

96-99行插入如下代码:

	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
	HAL_Delay(1000);
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0);
	HAL_Delay(1000);

stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

下载代码到开发板

  • 按照之前的连线接好STLINK和bluePill。将STLINK插入电脑的USB口。点击下图所示的绿色运行按钮。

  • 将bluePill板子上的黄色跳线帽如下图1中方式跳线,并点击下面的Reset按钮,板子进入编程模式56
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

  • 点击工具栏中的绿色小箭头标志进行编译和下载。
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

  • 在弹出的对话框中选择所有默认设置,直接点击OK
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

  • 如下图所示,显示successful就说明下载完成了
    stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

  • 此时需要将开发板上的跳线更改为运行模式,就可以看到板载PC13灯开始闪烁了。(有时候也不用,,,如果你下载了发现没变化可以改变跳帽试试。新手,,这个地方不太能解释清楚。)

tips 下载的时候编译器可能会弹出下图所示的界面。此时需要更新你的STLINK。方法是第一步线点击Open in update mode,这时下方标号2所示的位置就会显示你的下载器相关信息。点击标号3所示的upgrade。开始更新。更新完后就能正常进入下载模式了。
stm32的pc13闪烁,stm32f103C8T6,STM32CubeIDE,HAL库

小结

其实这个教程就是简单的展示了下如何利用HAL库提供的函数快速在STM32板子上点亮一个小灯。因为不涉及到复杂的参数设置,所以CubeMX里面的相应设置比较少。整个过程和Arduino开发比起来稍显复杂,但是基本思路是相同的。Arduino中因为都是直接选择开发板,所以不用配置CubeMX中的相关信息。其实CubeMX中也可以直接选择开发板。后续会涉及到。
后续计划这个教程都配套录制对应的视频教程来弥补文字教程中可能遗漏的细节。

参考文献


  1. STLINK-V2和STM32连线:
    https://freeelectron.ro/installing-st-link-v2-to-flash-stm32-targets-on-linux/ ↩︎

  2. STM32-base:
    https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill.html ↩︎

  3. STM32CubeIDE下载安装:
    https://blog.csdn.net/Brendon_Tan/article/details/107685044 ↩︎

  4. Stm32CubeIDE设置补全快捷键和主题:
    https://blog.csdn.net/u014627020/article/details/117444089 ↩︎

  5. BLUEPill编程和运行模式切换:
    https://iotforgeeks.com/program-blue-pill-stm32-directly-with-usb-port/ ↩︎

  6. STM32官方WiKiSTEP by STEP教程https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Category:Getting_started_with_STM32_:_STM32_step_by_step ↩︎文章来源地址https://www.toymoban.com/news/detail-568815.html

到了这里,关于STM32CubeIDE + HAL + STM32f103C8T6 系列教程1 ---板载PC13LED闪烁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WS2812B彩灯 STM32HAL库开发:PWM+DMA(stm32f103c8t6)

    目录 一、摘要 二、WS2812B介绍 三、CUBEMX配置 四、程序介绍(KEIL编译器) 五、数据手册         1、本文使用示例单片机型号为 stm32f103c8t6 ,RGB型号为 WS2812B ;          2、主要实现功能是实现用 PWM+DMA 使RGB_LED亮起不同颜色的灯光;         3、目的:简单调通该型号

    2024年02月03日
    浏览(16)
  • STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯

    STM32F103C8T6基础开发教程(HAL库)—开发环境配置 STM32F103C8T6基础开发教程(HAL库)—Keil添加注释的快捷键 STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯 STM32F103C8T6基础开发教程(HAL库)—LED灯交替闪烁 STM32F103C8T6基础开发教程(HAL库)—LED灯呼吸闪烁 STM32F103C8T6基础开发

    2024年01月18日
    浏览(29)
  • ESP8266与手机相互通信 透传模式(STM32F103C8T6 HAL库)有APP和完整代码

    一、目标         stm32f103c8t6用串口发送AT指令控制esp8266发送数据到手机APP上,同时手机也可以发送数据到stm32f103c8t6主控,控制LED的亮灭。          将esp8266模块的GND、VCC、TXD、RXD、CH-PD与单片机对应引脚连接,其中TXD与RXD要反接,模块在工作时CH-PD要处于高电平状态。 二、

    2024年02月16日
    浏览(19)
  • 舵机控制(STM32F103C8T6)

            本文是以 STM32F103C8T6 作为主控芯片,通过PB6端口输出PWM,实现控制180°舵机。 (一)概述         舵机是一种位置伺服驱动器器,是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时,输出轴就可以转到特定的位置。只在控制信号持续不变,伺服机构就

    2023年04月09日
    浏览(20)
  • STM32F103C8T6板子介绍

    STM32简介 STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器 STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等 STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。  STM32F103C8T6 F1XX片上资源

    2024年02月11日
    浏览(22)
  • STM32F103C8T6系统板

    1.电源部分 2.复位 3.晶振 4. 电源电路——防反接 有关二极管 漫谈二极管防电源反接电路 本次采用上图右下角的NMOS防反接电路。 电源电路——电源芯片 AMS1117是AMS公司的 ,LM1117是NS(美国国家半导体)的,LM1117要贵很多,所以一般的用AMS1117就可以了。 (以下分析参考STM32F10

    2024年02月02日
    浏览(28)
  • STM32F103C8T6串口通信

      首先来看一下需要操作的函数,以及配置的步骤: 图1                                                  图2   Code: usart.c #include \\\"usart.h\\\" void ustart_Init(void ) { GPIO_InitTypeDef GPIO_Init_Ustar ; // 定义输出端口TX的结构体对象 USART_InitTypeDef USTART_Init; // 定义串口初始化结构体对象

    2024年02月16日
    浏览(22)
  • 功耗测评 | STM32F103C8T6

    STM32F103C8T6 MCU越来越广泛的应用在生产生活的各个领域,外接丰富的传感器、功能模块、通信模块、显示存储等可以形成各种可样的产品项目应用。对于功耗要求比较高的产品,一般会选择STM32L系列的MCU,但是从功耗的评测角度,逻辑上是基本相似的。 在很多应用场合中都对

    2024年02月07日
    浏览(17)
  • STM32系列(HAL库)——F103C8T6获取DHT11温湿度串口打印

    在此特别鸣谢原文博主! (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) (1)F1的板子,本例使用经典F103C8T6  (2)DHT11——温湿度传感器 (3)ST-link 下载器 (4)USB-TTL模块 (5)杜邦线若干 (1)芯片选择 STM32F103C8T6  (2)配置RCC、SYS、时钟树 配置RCC 配置SYS 配置时钟树 (3) 配置GPIO  (4)配置

    2023年04月08日
    浏览(23)
  • stm32f103c8t6的外部中断

    在单片机中存在着中断系统,这个系统的逻辑和功能在51单片机中已经有所了解。 1.在32单片机中的内核有一个nvic 里面存放许多优先级的设定,外接许多中断源,比如“exti、tim、adc、usart等”接入之后,nvic再通过中断优先级进行排队,再内接入cpu中进行处理,这样子大大减少

    2024年02月09日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包