当前位置: 首页 > news >正文

基于STM32C8T6的CubeMX:HAL库点亮LED

三个可能的问题和解决方法:

大家完成之后回来看,每一种改错误都是一种成长,不要畏惧,要快乐,积极面对,要耐心对待

STMCuBeMX新建项目的两种匪夷所思的问题icon-default.png?t=O83Ahttps://mp.csdn.net/mp_blog/creation/editor/142151511

STMCubeMX文件下载后会出现其他项目无法下载的问题icon-default.png?t=O83Ahttps://mp.csdn.net/mp_blog/creation/editor/142152180

一、准备工作

        1、配置好的STMCubeMX环境
        2、stm32C8T6开发版一块,LED灯若干
        3、下载器一个

二、操作步骤

        1、新建项目

        2、等待过程

         3、选择芯片和MCU,开始一个新项目

        4、配置管脚

        可以看见,当右键选择某个管脚时,会出现这个管脚所拥有的功能。我们点灯就直接把需要的端口配备成 GPIO_Output 就可以

        我选择了PA0、PA2、PA4三个端口,大家可以根据喜好选择端口 

        5、配备时钟 

         6、其他配置

        7、点击生成keil文件

        8、keil文件相关操作

        在箭头所指处加入以下代码

     HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);  //此处根据自己在CubeMx中设置的端口HAL_Delay(500);HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);	HAL_Delay(500);HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_4);HAL_Delay(500);

        9、软件配置 

        ①

②、选择自己的下载模式

③勾选箭头指向处

        10、最后点击运行,并下载的单片机中,就可以实现闪烁功能了 

三、main.c函数带注释

/* USER CODE BEGIN Header */
2/**
3  ******************************************************************************
4  * @file           : main.c
5  * @brief          : 主程序体
6  ******************************************************************************
7  * @attention
8  *
9  * 版权 (c) 2024 STMicroelectronics.
10  * 所有权利保留。
11  *
12  * 此软件按可以在该软件组件根目录中的LICENSE文件中找到的条款进行许可。
13  * 如果没有随此软件一起提供LICENSE文件,则按原样提供。
14  *
15  ******************************************************************************
16  */
17/* USER CODE END Header */
18/* Includes ------------------------------------------------------------------*/
19#include "main.h"  // 包含主头文件
20
21/* Private includes ----------------------------------------------------------*/
22/* USER CODE BEGIN Includes */
23
24/* USER CODE END Includes */
25
26/* Private typedef -----------------------------------------------------------*/
27/* USER CODE BEGIN PTD */
28
29/* USER CODE END PTD */
30
31/* Private define ------------------------------------------------------------*/
32/* USER CODE BEGIN PD */
33/* USER CODE END PD */
34
35/* Private macro -------------------------------------------------------------*/
36/* USER CODE BEGIN PM */
37
38/* USER CODE END PM */
39
40/* Private variables ---------------------------------------------------------*/
41
42/* USER CODE BEGIN PV */
43
44/* USER CODE END PV */
45
46/* Private function prototypes -----------------------------------------------*/
47void SystemClock_Config(void);  // 系统时钟配置函数声明
48static void MX_GPIO_Init(void);  // GPIO初始化函数声明
49/* USER CODE BEGIN PFP */
50
51/* USER CODE END PFP */
52
53/* Private user code ---------------------------------------------------------*/
54/* USER CODE BEGIN 0 */
55
56/* USER CODE END 0 */
57
58/**
59  * @brief  应用程序入口点
60  * @retval int
61  */
62int main(void)
63{
64  /* USER CODE BEGIN 1 */
65  // 用户自定义代码开始
66  /* USER CODE END 1 */
67
68  /* MCU Configuration--------------------------------------------------------*/
69  /* 重置所有外设,初始化闪存接口和系统滴答定时器 */
70  HAL_Init();
71
72  /* USER CODE BEGIN Init */
73  // 用户自定义初始化代码
74  /* USER CODE END Init */
75
76  /* Configure the system clock */
77  SystemClock_Config();  // 配置系统时钟
78
79  /* USER CODE BEGIN SysInit */
80  // 用户自定义系统初始化代码
81  /* USER CODE END SysInit */
82
83  /* Initialize all configured peripherals */
84  MX_GPIO_Init();  // 初始化所有配置好的GPIO
85  /* USER CODE BEGIN 2 */
86  // 用户自定义代码开始
87  /* USER CODE END 2 */
88
89  /* Infinite loop */
90  /* USER CODE BEGIN WHILE */
91  while (1)
92  {
93    /* USER CODE END WHILE */
94
95    /* USER CODE BEGIN 3 */
96    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);  // 切换PA0引脚的状态
97    HAL_Delay(500);  // 延时500毫秒
98    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);  // 切换PA2引脚的状态
99    HAL_Delay(500);  // 再次延时500毫秒
100    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_4);  // 切换PA4引脚的状态
101    HAL_Delay(500);  // 最后延时500毫秒
102  }
103  /* USER CODE END 3 */
104}
105
106/**
107  * @brief System Clock Configuration
108  * @retval None
109  */
110void SystemClock_Config(void)
111{
112  RCC_OscInitTypeDef RCC_OscInitStruct = {0};  // RCC振荡器初始化结构体
113  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};  // RCC时钟初始化结构体
114
115  /** 初始化RCC振荡器根据RCC_OscInitTypeDef结构体指定的参数
116  */
117  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;  // 选择HSI振荡器类型
118  RCC_OscInitStruct.HSIState = RCC_HSI_ON;  // HSI振荡器开启
119  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;  // 设置默认的HSI校准值
120  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;  // PLL关闭
121  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)  // 配置RCC振荡器
122  {
123    Error_Handler();  // 如果配置失败则调用错误处理函数
124  }
125  /** 初始化CPU, AHB和APB总线时钟
126  */
127  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;  // 指定要配置的时钟类型
128  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;  // 系统时钟源为HSI
129  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  // AHB时钟除数为1
130  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  // APB1时钟除数为1
131  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;  // APB2时钟除数为1
132
133  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)  // 配置RCC时钟
134  {
135    Error_Handler();  // 如果配置失败则调用错误处理函数
136  }
137  HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_SYSCLK, RCC_MCODIV_1);  // 配置MCO1输出为系统时钟
138}
139
140/**
141  * @brief GPIO Initialization Function
142  * @param None
143  * @retval None
144  */
145static void MX_GPIO_Init(void)
146{
147  GPIO_InitTypeDef GPIO_InitStruct = {0};  // GPIO初始化结构体
148
149  /* GPIO Ports Clock Enable */
150  __HAL_RCC_GPIOD_CLK_ENABLE();  // 使能GPIOD时钟
151  __HAL_RCC_GPIOA_CLK_ENABLE();  // 使能GPIOA时钟
152
153  /*Configure GPIO pin Output Level */
154  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_4, GPIO_PIN_RESET);  // 设置GPIOA的PA0、PA2、PA4为低电平
155
156  /*Configure GPIO pins : PA0 PA2 PA4 */
157  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_4;  // 配置引脚
158  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 输出推挽模式
159  GPIO_InitStruct.Pull = GPIO_NOPULL;  // 不使用内部上拉或下拉电阻
160  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  // 低速模式
161  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);  // 初始化GPIOA
162
163  /*Configure GPIO pin : PA8 */
164  GPIO_InitStruct.Pin = GPIO_PIN_8;  // 配置引脚
165  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;  // 复用推挽输出模式
166  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  // 低速模式
167  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);  // 初始化GPIOA
168}
169
170/* USER CODE BEGIN 4 */
171
172/* USER CODE END 4 */
173
174/**
175  * @brief  此函数在发生错误时执行。
176  * @retval None
177  */
178void Error_Handler(void)
179{
180  /* USER CODE BEGIN Error_Handler_Debug */
181  // 用户可以添加自己的实现来报告HAL错误返回状态
182  __disable_irq();  // 关闭中断
183  while (1)  // 进入无限循环
184  {
185  }
186  /* USER CODE END Error_Handler_Debug */
187}
188
189#ifdef  USE_FULL_ASSERT
190/**
191  * @brief  报告发生assert_param错误的源文件名和源行号。
192  * @param  file: 指向源文件名的指针
193  * @param  line: assert_param错误行源号
194  * @retval None
195  */
196void assert_failed(uint8_t *file, uint32_t line)
197{
198  /* USER CODE BEGIN 6 */
199  // 用户可以添加自己的实现来报告文件名和行号
200  /* USER CODE END 6 */
201}
202#endif /* USE_FULL_ASSERT */

相关文章:

基于STM32C8T6的CubeMX:HAL库点亮LED

三个可能的问题和解决方法: 大家完成之后回来看,每一种改错误都是一种成长,不要畏惧,要快乐,积极面对,要耐心对待 STMCuBeMX新建项目的两种匪夷所思的问题https://mp.csdn.net/mp_blog/creation/editor/1…...

职业院校数据科学与大数据技术专业人工智能实训室建设方案

一、引言 随着人工智能(AI)技术的迅猛发展,其在全球范围内的应用日益广泛,从智能交通、环境保护到公共安全、智能家居等多个领域均展现出巨大的潜力。然而,我国在人工智能领域的人才储备仍显不足,这已成为…...

JavaScript网页设计案例分析

JavaScript网页设计案例分析 随着互联网技术的发展,JavaScript 已经成为现代网页设计中不可或缺的一部分。从简单的页面交互到复杂的应用程序开发,JavaScript 都发挥着至关重要的作用。本文将探讨几个运用 JavaScript 进行网页设计的经典案例&#xff0…...

2024.9.15周报

一、题目信息 题目:Physics-informed neural networks for solving flow problems modeled by the 2D Shallow Water Equations without labeled data 链接:物理信息神经网络用于解决由二维浅水方程建模的流动问题,无需标记数据- ScienceDi…...

QT模型视图结构1

文章目录 Qt 模型视图结构概述(一)1、模型/视图结构基本原理2、模型3、视图4、代理5、简单实例 Qt 模型视图结构概述(一) ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方法。模型存储数据,视图组件显示模型中的数据,在视图组件里修改的数据会…...

Ubuntu20+Noetic+cartographer_ros编译部署

1 准备工作 (1)准备Ubuntu20系统。 (2)安装ROS系统,参考 https://blog.csdn.net/weixin_46123033/article/details/139527141(3)Cartographer相关软件包和源码下载: https://gitee.com/mrwan…...

linux-L3-linux 复制文件

linux 中要将文件file1.txt复制到目录dir中,可以使用以下命令 cp file1.txt dir/复制文件 cp /path/to/source/file /path/to/destination移动 mv /path/to/source/file /path/to/destination复制文件夹内的文件 cp -a /path/to/source/file /path/to/destinati…...

Kotlin:1.9.0 的新特性

一、概述 Kotlin 1.9.0版本英语官方文档 Kotlin 1.9.0 中文官方文档 The Kotlin 1.9.0 release is out and the K2 compiler for the JVM is now in Beta. Additionally, here are some of the main highlights: Kotlin 1.9.0版本已经发布,用于JVM的K2编译器现在…...

golang实现从服务器下载文件到本地指定目录

一、连接服务器,采用sftp连接模式 package middlewaresimport ("fmt""time""github.com/pkg/sftp""golang.org/x/crypto/ssh" )// 建立服务器连接 func Connect(user, password, host string, port int) (*sftp.Client, e…...

C++数据结构-树的概念及分类介绍(基础篇)

1.什么是树 树是数据结构中的一种,其属于非线性数据结构结构的一种,我们前文所提到的数据结构多数都是线性的,这也是较为简单的数据结构,而接下来的树与图均属于非线性数据结构,也是概念极多的一类。 树是由结点或顶…...

职场 Death Note

场景一 测试:哎,怎么会这样呢?时间没到,他怎么就变成这个样子了呢?一副大惊小怪,整个办公室都是他的声音 开发:对对对,我代码问题,别BB了。 你直接说这个地方不对&#…...

Vue3.0组合式API:computed计算属性、watch监听器、watchEffect高级监听器

1、computed() 计算属性 在模板中绑定表达式只能用于简单的运算。如果运算比较复杂,可以使用 Vue.js 提供的计算属性,通过计算属性可以处理比较复杂的逻辑。 1.1 计算属性的应用 通过计算属性可以实现各种复杂的逻辑,包括运算、函数调用等…...

RAII 与 std::lock_guard 在 C++ 中的应用:自动化互斥锁管理与线程安全

目录 1. RAII(资源获取即初始化)概述 RAII 的优点 2. std::lock_guard 的工作原理 2.1 构造函数 2.2 析构函数 2.3 关键特性 3. 为什么 std::lock_guard 能自动管理锁的生命周期 3.1 RAII 原则的应用 3.2 异常安全 3.3 简化代码和减少错误 4.…...

风格汇:奢华风格在UI设计中如何被定义的。

在UI设计中,奢华风格通常指的是一种高端、豪华、精致的设计风格,旨在营造出奢华、豪华的视觉效果,给用户带来高品质、高档次的感受。 奢华风格的UI设计通常会运用一些富丽堂皇的元素和效果,例如金色、银色、贵族紫、华丽的字体、华…...

Vue2 qrcode+html2canvas 实现二维码的生成和保存

1.安装 npm install qrcode npm install html2canvas 2.引用 import QRCode from qrcode import html2canvas from html2canvas 效果&#xff1a; 1. 二维码生成&#xff1a; 下载二维码图片&#xff1a; 二维码的内容&#xff1a; 实现代码&#xff1a; <template>…...

GEE 教程:利用Google Dynamic数据进行逐月指定区域的土地分类数据提取分析

目录 简介 数据 代码 结果 简介 利用Google Dynamic数据进行逐月指定区域的土地分类数据提取分析 数据 Google Dynamic数据是指由Google自动生成、自动更新的数据,它不需要人工干预,而是通过算法和机器学习技术从各种来源获取并解析数据。这些数据可以是来自互联网上的…...

Nginx 负载均衡:优化网站性能与可扩展性的利器

在当今高流量的互联网时代&#xff0c;网站的性能和可扩展性成为了衡量其成功与否的关键因素之一。随着用户量的不断增加&#xff0c;单一服务器往往难以承受巨大的访问压力&#xff0c;这时就需要引入负载均衡技术来分散请求&#xff0c;提高系统的整体性能和可靠性。Nginx&am…...

【Python基础】Python错误和异常处理(详细实例)

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、Python中的错误类型三、Python异常处理机制3.1 try-except语句3.2 try-except-else语句3.3 try-fi…...

如何查看串口被哪个程序占用?截止目前最方便的方法

痛点&#xff1a;串口因为某种原因被占用&#xff0c;如何找到罪魁祸首&#xff1f; 做开发的小伙伴们&#xff0c;经常会遇到这样的问题&#xff1a;串口因为某种原因被占用&#xff0c;导致无法通讯&#xff0c;但是又找不到被哪个程序占用。只有重启电脑&#xff0c;才能解…...

深入理解SpringBoot(一)----SpringBoot的启动流程分析

1、SpringApplication 对象实例化 SpringApplication 文件 public static ConfigurableApplicationContext run(Object[] sources, String[] args) {// 传递的source其实就是类Bootstrapreturn new SpringApplication(sources).run(args);// 实例化一个SpringApplication对象执…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...