自学内容网 自学内容网

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文件烧录到单片机中。


原文地址:https://blog.csdn.net/qq_40698086/article/details/143484688

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!