锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2022-09-19 03:30:00 fly传感器

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文件

STM32F103C8T作者选择了6个开发板作者团体自行设计最小系统开发板,未来章节教程均采用TWRS103B-V1.3作为一个教学开发板,为了更好的快速入门,建议并支持作者。当然,如果你手里还有其他东西STM32F103C68T也可参考作者教程学习,功能相同!

TWRS103B-V1.33最小系统开发板和传统开发板STM32F103C8T最小系统开发板的区别

TWRSTM32F103C8T6最小系统开发板 传统STM32C8T6最小系统开发板
支持USB下载 不支持USB下载,需要下载器
PB5自带WS2812可编程RGB彩灯 PC13有普通的可编程LED灯
引出PD0、PD1 没有引出PD0、PD1
在这里插入图片描述

本节使用的材料

欢迎来到蒙学长小店采购:淘宝店传送门
本节源码下载(免费下载)在本文末尾提供

1.点亮第一颗LED灯

1)STM32CubeMX配置

上节已经描述过了CubeMX生成第一个项目,本节不会重复太多,配置LED灯输出引脚即可。

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

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

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

(4)单击System Core(系统的核心) → RCC(配置晶振) → High speed Clock(HSE)(高速晶振)→ Crystal/Ceramic Resonator(外部晶振,8M)(如果在这里选择Disable此时不能使用外部高速晶振),PD0与PD1用作晶振接口,如果没有配置,可以把PD0、PD1当做普通IO口腔使用(新手建议跟随作者或配置)。

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

(6)设置后PB9变绿,继续跟着作者配置

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



注:如果窗户弹出,则不能使用72Mhz只能设置为64Mhz,那就是在RCC没有配置外部高速晶振,回去配置就行了。如果没有,那就是芯片选错了。

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

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

(10)开工

1)Keli5编写代码

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

禁忌:必须在那里BEGIN END写代码,否则后面STM32CubeMX重新配置生成代码会删除BEGIN END外面的代码

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

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

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

2.程序烧录

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

(1)ST-LINK/V2

TWRSTM32F103C8T6最小系统开发板
传统STM32F103C8T6最小系统开发板

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

(2)安装仿真器驱动

①本文末尾处下载并 解压STM32仿真器驱动压缩包
②右键此电脑→管理

③设备管理器→STLink→更新驱动程序

④浏览

⑤找到刚刚解压的ST-LINK驱动

⑥下一步

⑦完成

⑧没有感叹号了

(3)编译烧录程序

①F7编译

0错误,0警告
②单击魔法棒

③Debug→ST-Link Debugger→OK

④F8烧录程序

⑤正在烧录

④每次下载完之后按一次下开发板上的RES(复位按键)才能看到效果

实验效果


LED亮起,实验完成

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

2)方式二(串口下载)

(1)插上数据线

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

(3)打开安装串口驱动

(4)安装串口驱动


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


(6)下载并解压FlyMcu

(7)双击打开FlyMcu.exe

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

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

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

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

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

实验效果


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

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章