admin管理员组

文章数量:1794759

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

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

STM32F103C8T6基础开发教程目录

  • STM32F103C8T6基础开发教程(HAL库)—开发环境配置
  • STM32F103C8T6基础开发教程(HAL库)—Keil添加注释的快捷键
  • STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯
  • STM32F103C8T6基础开发教程(HAL库)—LED灯交替闪烁
  • STM32F103C8T6基础开发教程(HAL库)—LED灯呼吸闪烁
  • STM32F103C8T6基础开发教程(HAL库)—等级划分LED灯亮度
  • STM32F103C8T6基础开发教程(HAL库)—按键点亮LED灯
  • STM32F103C8T6基础开发教程(HAL库)—定时器的使用
  • STM32F103C8T6基础开发教程(HAL库)—串口发送与接收
  • STM32F103C8T6基础开发教程(HAL库)—点亮OLED屏幕
  • STM32F103C8T6基础开发教程(HAL库)—传感器使用
  • STM32F103C8T6基础开发教程(HAL库)—读写内部FALSH
  • 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
    本节内容要用到的材料

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

    1.点亮第一颗LED灯 1)STM32CubeMX配置

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

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

    (2)CubeMX下完补丁包弹出芯片选择界面,在Commercial搜索框输入F103C8T6右下方会自动出现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

    本文标签: 第一颗基础教程HALled