STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯

这篇具有很好参考价值的文章主要介绍了STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32F103C8T6基础开发教程目录

  1. STM32F103C8T6基础开发教程(HAL库)—开发环境配置
  2. STM32F103C8T6基础开发教程(HAL库)—Keil添加注释的快捷键
  3. STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯
  4. STM32F103C8T6基础开发教程(HAL库)—LED灯交替闪烁
  5. STM32F103C8T6基础开发教程(HAL库)—LED灯呼吸闪烁
  6. STM32F103C8T6基础开发教程(HAL库)—等级划分LED灯亮度
  7. STM32F103C8T6基础开发教程(HAL库)—按键点亮LED灯
  8. STM32F103C8T6基础开发教程(HAL库)—定时器的使用
  9. STM32F103C8T6基础开发教程(HAL库)—串口发送与接收
  10. STM32F103C8T6基础开发教程(HAL库)—点亮OLED屏幕
  11. STM32F103C8T6基础开发教程(HAL库)—传感器使用
  12. STM32F103C8T6基础开发教程(HAL库)—读写内部FALSH
  13. STM32F103C8T6基础开发教程(HAL库)—LORA点对点通信

STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯

本节内容

  • 点亮第一颗LED灯
  • 编译并烧录HEX文件

STM32F103C8T6开发板笔者选用笔者团体自行设计的最小系统开发板,以后的章节教程均采用TWRS103B-V1.3作为教学开发板,为了大家更好的快速入门,建议购买支持一下笔者,当然,如果自已手上也有其他STM32F103C68T也可以参考笔者教程进行学习,功能都是一样的!

TWRS103B-V1.3最小系统开发板与传统STM32F103C8T6最小系统开发板区别

TWRSTM32F103C8T6最小系统开发板 传统STM32C8T6最小系统开发板
支持USB下载 不支持USB下载,需要下载器
PB5自带WS2812可编程RGB彩灯 PC13自带可编程普通LED灯
引出PD0、PD1 没有引出PD0、PD1
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

本节内容要用到的材料

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

欢迎进入蒙学长小铺进行采购:淘宝店传送门
本文末尾处提供本节源码下载(免费下载)

1.点亮第一颗LED灯

1)STM32CubeMX配置

上节已叙述了CubeMX生成第一个工程,本节将不再过多的赘述,配置LED灯输出引脚即可。

(1)打开STM32CubeMX,单击ACCESS TO MCU SELECTOR

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(2)CubeMX下完补丁包弹出芯片选择界面,在Commercial搜索框输入F103C8T6右下方会自动出现STM32F103C8T6,双击即可

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(3)进入配置界面后单击System Core(系统的核心) → SYS → Debug → Serial Wire(这个是调试模式,如果不选Serial Wire则可能会使得无法使用Stlink或Jlink下载,如果你是用串口线下载,不调试,不选也没关系),这时PA13与PA14被用来做调试的LCK和DIO口,如果引脚不够用的情况可以不配置为LCK和DIO口,可以把PA13、PA14当做普通IO口使用(新手不建议)。

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(4)单击System Core(系统的核心) → RCC(配置晶振) → High speed Clock(HSE)(高速晶振)→ Crystal/Ceramic Resonator(外部晶振,8M)(如果这里选Disable则无法使用外部高速晶振),这时PD0与PD1被用来做晶振的接口,如果不配置则可以把PD0、PD1当做普通IO口使用(新手建议跟着笔者还是进行配置)。

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(5)依次单击Pinout & Configuration → System Core → GPIO →右边的PB9(因为笔者LEDD灯接的PB9所以这里选PB9,读者按照自己的要求自行设定) → GPIO_Output

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(6)设置好之后PB9变成绿色,跟着笔者继续配置

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(7)单击Clock Configuration在这里输入72,按下回车 → OK,自动配置时钟频率为72Mhz

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
注:如果弹出这个窗口,不能使用72Mhz只能设置为64Mhz,那就是在RCC没有配置外部高速晶振,回去配置即可,如果还不行,那就是芯片选错了。
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(8)单击Project Manager → Project ,配置准备要生成的工程

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(9)单击Code Generator 单选Copy only the nacassary library files,勾选Generate peripheral…peripheral,上述的配置都设置好后就可以单击右上角的GENERATE CODE生成工程了。

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(10)打开工程

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

1)Keli5编写代码

(1)打开工程后,进入Keli5软件,依次打开工程结构树,双击main.c开始写源码

切忌:一定要在BEGIN END里写代码,不然后面STM32CubeMX重新配置生成代码会删除BEGIN END外面的代码
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(2)找到Drivers文件夹里的stm32f1xx_hal_gpio.c(双击打开),找到第465行的HAL_GPIO_WritrPin函数,复制其函数名,并在main方法里的wihile(1)调用

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(3)把HAL_GPIO_WritrPin函数粘贴在,main方法里的wihile(1)

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(4)左上角编译,0错误,0警告

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

2.程序烧录

1)方式一(ST-LINK/V2)

(1)ST-LINK/V2

TWRSTM32F103C8T6最小系统开发板
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,armstm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
传统STM32F103C8T6最小系统开发板
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,armstm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

由于笔者不太理解传统STM32F103最小系统板为什么要把GND放在上面,交叉接线,每次接ST-LINK/V2的线都很繁琐,所以笔者团队按照ST-LINK/V2顺序来设计,大大提高开发效率。

(2)安装仿真器驱动

①本文末尾处下载并 解压STM32仿真器驱动压缩包stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
②右键此电脑→管理
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
③设备管理器→STLink→更新驱动程序
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
④浏览
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
⑤找到刚刚解压的ST-LINK驱动
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
⑥下一步
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
⑦完成
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
⑧没有感叹号了stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(3)编译烧录程序

①F7编译
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
0错误,0警告
②单击魔法棒
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
③Debug→ST-Link Debugger→OK
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
④F8烧录程序
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
⑤正在烧录
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
④每次下载完之后按一次下开发板上的RES(复位按键)才能看到效果
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

实验效果

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
LED亮起,实验完成

  • 点亮第一颗LED灯
  • 编译并烧录HEX文件

2)方式二(串口下载)

(1)插上数据线

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(2)下载并解压串口驱动

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(3)打开安装串口驱动

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(4)安装串口驱动

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(5)右键此电脑 → 管理 →设备管理器 → 端口(COM和LTP)识别到串口,证明已经装好了,并记住该串口号

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(6)下载并解压FlyMcu

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(7)双击打开FlyMcu.exe

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(8)双击打开FlyMcu.exe → 搜索串口 → 把bps改为460800比特率

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(9)找到之前STM32CubeMX配置时的路径,Demo → MDK-ARM → Demo → 打开Demo.hex

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(10)单击开始变成,这时右边显示开始连接…

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(11)按下开发板上的RES和DOW

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

(12)程序下载,等待完成即可

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm

实验效果

stm32f103c8t6编程教程,STM32F103C8T6开发教程,stm32,单片机,arm
LED亮起,实验完成

  • 点亮第一颗LED灯
  • 编译并烧录HEX文件

本节主要代码

/**
 * Main application entry point.
 */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */
	
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		//SET:置为高电平  RESET:置为低电平  
		//由于笔者是用LED的负极接到单片机,
		//所以这里要用高电平才能点亮
		
		HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);	
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

本节需掌握函数

HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);		//点亮LED
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);		//熄灭LED

本节资源

百度网盘: 本节驱动及小工具
提取码:RSXC
百度网盘: 本节源码
提取码:RSXC文章来源地址https://www.toymoban.com/news/detail-801491.html

到了这里,关于STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 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)
  • STM32F103C8T6 按键扫描输入

    第一章 STM32F103C8T6 点亮LED灯 系列文章目录 前言 一、原理  1.按键类型  2.按键消抖 3.IO口输入配置 1)模拟输出 2)浮空输入模式 3)下拉输入模式(PULL DOWN) 4)上拉输入模式(PULL UP) 二、代码部分 main.c key.c key.h 总结         上一章我们成功入门了STM32F103C8T6,今天我们来

    2023年04月23日
    浏览(32)
  • [STM32F103C8T6]ADC转换

    什么是ADC转换? ADC转换的全称是: Analog-to-Digital Converter ,指模拟 / 数字转换器 ADC的性能指标: ADC分辨率: SSA与VREF-一起接到地,DDA与VREF+接到3.3v,所以ADC转换的范围是0---3.3v 所以最后的ADC转换值应该是我们的测量值*分辨率    分辨率 = 3.3v/2^12 = (3.3/4096)   12位的转换器所

    2024年02月06日
    浏览(26)
  • STM32F103C8T6串口调试篇

    项目开发中,当出现bug时,由于不知道某个变量的值,所以很难定位问题,针对此问题,串口调试脱颖而出。通过串口printf()实时将需要显示的信息打印出来,这样就很方便的定位问题。 串口设置方法 1.购买调试器pwlink2。参考STM32F103C8T6程序烧录方法_stm32f103c8t6如何烧录_流

    2024年02月12日
    浏览(20)
  • stm32f103c8t6的外部中断

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

    2024年02月09日
    浏览(19)
  • STM32F103C8T6移植FreeRTOS

    根据自己开发板型号下载地址:STM32相关内容下载地址 SDK直接下载地址:STM32直接下载地址 下载参考博客 FreeROTS下载地址 选用V9.0.0 版本 个人创建目录如下,可做参考 keil目录 链接头文件 • 修改堆栈大小 • 修改中断函数名 去掉stm32f10x_it.c终端函数 增加FreeRTOS中断 特别解释

    2024年02月12日
    浏览(25)
  • WS2812B彩灯 STM32HAL库开发:PWM+DMA(stm32f103c8t6)

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

    2024年02月03日
    浏览(16)
  • 嵌入式硬件——stm32F103C8T6

    如下图:    处理器核心:STM32F103C8T6内置了ARM Cortex-M3处理器,这是一种高性能、低功耗的32位RISC处理器,适用于嵌入式系统。 时钟速度:它可以工作在不同的时钟速度,最高主频可达72 MHz。 存储器:包括64KB的Flash程序存储器用于存储程序代码,以及20KB的SRAM用于存储数据和

    2024年02月05日
    浏览(22)
  • 自制STM32F103C8T6最小系统板

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 记录自己绘制第一块STM32F103C8T6最小系统板,包括原理图的绘制,pcb图的绘制和布局,以及器材的选购。 提示:有任何问题和交流可以加q:2874160799, 我基本上不看评论和私信。 根据ST官方手册,查看引脚

    2024年02月07日
    浏览(18)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包