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

STM32F103C8T6单片机

目录

1. [什么是单片机](#什么是单片机)

2. [单片机的结构](#单片机的结构)

3. [单片机开发环境搭建](#单片机开发环境搭建)

- [安装IDE](#安装ide)

- [配置开发环境](#配置开发环境)

4. [编写第一个程序](#编写第一个程序)

5. [硬件连接](#硬件连接)

6. [调试与烧录](#调试与烧录)

7. [总结](#总结)

什么是单片机

单片机(Microcontroller Unit, MCU)是将中央处理器(CPU)、存储器(RAM/ROM)、输入输出接口(I/O)等集成在一个芯片上的微型计算机系统。

单片机的结构

- 中央处理器 (CPU)

- 存储器 (Memory)

- 输入输出接口 (I/O Ports)

- 定时器/计数器 (Timers/Counters)

- 串行通信接口 (Serial Communication Interface)

单片机开发环境搭建

安装IDE

1. 访问[Keil官网](http://www.keil.com/)下载Keil MDK。

2. 安装Keil MDK。

3. 获取并安装STM32系列单片机的支持包。

配置开发环境

1. 打开Keil MDK,创建一个新的项目。

2. 在Project Settings中添加对应的设备。

3. 配置生成目标为.hex文件。

编写第一个程序

下面是一个简单的LED闪烁程序示例,使用STM32F103C8T6单片机。

```c

#include "stm32f1xx.h"

void SystemClock_Config(void);

void Error_Handler(void);

int main(void)

{

HAL_Init(); // 初始化HAL库

SystemClock_Config(); // 系统时钟初始化

GPIO_InitTypeDef GPIO_InitStruct = {0};

/* Configure LED pin as output */

GPIO_InitStruct.Pin = GPIO_PIN_13;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

/* Infinite loop */

while (1)

{

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // 切换LED状态

HAL_Delay(500); // 延迟500ms

}

}

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/ Initializes the RCC Oscillators according to the specified parameters

* in the RCC_OscInitTypeDef structure.

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLM = 8;

RCC_OscInitStruct.PLL.PLLN = 90;

RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}

/ Initializes the CPU, AHB and APB buses clocks

*/

RCC_ClkInitStruct.ClockOutput = RCC_CLOCKOUTPUT_NONE;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)

{

Error_Handler();

}

}

void Error_Handler(void)

{

__disable_irq();

while (1)

{

}

}

```

硬件连接

确保LED正极连接到PC13,负极通过限流电阻接地。

调试与烧录

1. 使用ST-Link或类似工具连接电脑与单片机板。

2. 在Keil MDK中选择Debug->Start进行调试。

3. 使用工具将.hex文件烧录到单片机中。


http://www.mrgr.cn/news/69508.html

相关文章:

  • 边缘计算在智能交通系统中的应用
  • 科研绘图系列:R语言组合多个不同图形(violin density barplot heatmap)
  • Python毕业设计选题:基于django+vue的荣誉证书管理系统
  • 数据分析:16s差异分析DESeq2 | Corncob | MaAsLin2 | ALDEx2
  • Windows下Python环境安装GDAL
  • Windows上安装与使用 Jupyter Notebook
  • Android Studio 将项目打包成apk文件
  • Discord无法接受邀请?常见原因详解
  • 写一个记录函数执行时间的装饰器
  • svgicon大小问题(简单记录
  • 【线性代数\矩阵论】矩阵逆引理证明、应用
  • 力扣 多数元素
  • 深度学习在图像识别中的应用
  • 用Java实现samza转换成flink
  • 使用多种机器学习调参模型进行二分类建模的全流程,代做分析辅导
  • 软件工程。
  • C 语言变量
  • 计算机毕业设计Python+大模型动漫推荐系统 动漫视频推荐系统 机器学习 协同过滤推荐算法 bilibili动漫爬虫 数据可视化 数据分析 大数据毕业设计
  • 硬件基础知识补全计划【七】MOS 晶体管
  • Oasis AI Minecraft:全球首个全AI驱动实时生成游戏的潜力与挑战