登录/注册

STM32芯片C语言例程

STM32芯片C语言例程

更多

以下是针对STM32芯片的C语言基础例程(以点亮LED为例),使用标准外设库(Standard Peripheral Library)和HAL库两种实现方式:


示例1:标准外设库实现

#include "stm32f10x.h" // 根据芯片型号修改头文件

// 硬件定义(假设LED接在PA5)
#define LED_PIN    GPIO_Pin_5
#define LED_PORT   GPIOA
#define RCC_LED    RCC_APB2Periph_GPIOA

void Delay(uint32_t nCount) {
  for(; nCount != 0; nCount--);
}

int main(void) {
  // 1. 初始化系统时钟(使用内部8MHz RC振荡器)
  SystemInit();

  // 2. 开启GPIOA时钟
  RCC_APB2PeriphClockCmd(RCC_LED, ENABLE);

  // 3. 配置GPIO为推挽输出
  GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_InitStruct.GPIO_Pin = LED_PIN;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;  // 推挽输出
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // 速度50MHz
  GPIO_Init(LED_PORT, &GPIO_InitStruct);

  while(1) {
    GPIO_SetBits(LED_PORT, LED_PIN);   // LED亮(高电平有效)
    Delay(5000000);                    // 简单延时
    GPIO_ResetBits(LED_PORT, LED_PIN); // LED灭
    Delay(5000000);
  }
}

示例2:HAL库实现(推荐)

#include "stm32f1xx_hal.h" // 根据芯片系列选择头文件

// 定义LED引脚
#define LED_PIN  GPIO_PIN_5
#define LED_PORT GPIOA

void SystemClock_Config(void); // 通常由STM32CubeMX生成

int main(void) {
  HAL_Init();                   // 初始化HAL库
  SystemClock_Config();         // 配置系统时钟

  // 1. 启用GPIOA时钟
  __HAL_RCC_GPIOA_CLK_ENABLE();

  // 2. 配置GPIO
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  GPIO_InitStruct.Pin = LED_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 推挽输出
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 高速
  HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);

  while(1) {
    HAL_GPIO_TogglePin(LED_PORT, LED_PIN); // LED状态翻转
    HAL_Delay(500);                        // 延时500ms(HAL库自带精确延时)
  }
}

关键步骤说明

  1. 时钟配置

    • 必须开启外设时钟(GPIO、USART等)才能操作外设
    • 标准库:RCC_APB2PeriphClockCmd()
    • HAL库:__HAL_RCC_GPIOA_CLK_ENABLE()
  2. GPIO初始化

    • 推挽输出模式(GPIO_MODE_OUTPUT_PP)最常用
    • 设置引脚速度(通常选GPIO_SPEED_FREQ_HIGH
  3. 延时函数

    • 标准库需自定义简单延时(循环计数)
    • HAL库提供精确毫秒延时 HAL_Delay()

编译与下载

  1. 工具链
  2. 连接硬件
    • ST-Link/V2或J-Link调试器
    • 开发板(如Nucleo、正点原子、野火等)
  3. 修改配置
    • 根据实际电路修改LED引脚号(查看开发板原理图)
    • 若LED低电平有效,将TogglePin改为WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET)控制

更复杂外设例程(UART、ADC、TIM等)可在ST官网搜索型号对应的标准库HAL库完整工程包。

STM32C语言的基础知识

C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C

2023-04-27 17:42:53

stm32单片机用什么语言 编程 stm32各种型号

C语言是STM32单片机最常用的编程语言之一,它具有结构化、模块化和可移

2023-04-12 13:22:48

STM32CUBEIDE(2)----生成简单的例程

使用STM32CUBEMX生成例程,这里使用NUCLEO-F103RB开发板。

2022-11-22 10:18:40

100个开发板配套C语言实验例程汇总

100个开发板配套C语言实验例程汇总

资料下载 yhmyhm123 2021-07-31 15:26:24

STM32F4 I2C-EEPROM实验例程

STM32F4 I2C-EEPROM实验例程(嵌入式开发专业课程)-STM32

资料下载 听风说梦 2021-07-30 16:02:36

C语言指针与指针变量的简介和运算实例程序免费下载

本文档的主要内容详细介绍的是C语言指针与指针变量的简介和运算实例程序免费下载

资料下载 佚名 2019-11-05 17:38:47

C语言指针的表达式实例程序说明

本文档的主要内容详细介绍的是C语言指针的表达式实例程序说明。

资料下载 佚名 2019-11-05 17:07:10

100例C语言经典算法题目和实例程序免费下载

本文档的主要内容详细介绍的是100例C语言经典算法题目和实例程序免费下载。

资料下载 佚名 2019-10-15 17:01:08

STM32单片机中的C语言基础知识

C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C

2022-09-21 17:21:33

C语言基础知识科普

C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C

2022-07-21 10:58:28

STM32使用教程 基于STM32F103RBT6的例程 STM32控制OLED例程

STM32使用教程 提供基于STM32F103RBT6的例程 硬件连接 我们提供的例程

2022-05-05 19:44:07

STM32 单片机C语言课程5-C语言预处理深入剖析2

大家上午好!今天为大家讲解C语言预处理深入剖析,请持续关注,会持续进行更新!前期回顾:STM32 单片机

2021-09-13 11:40:44

STM32操作系统系列使用C语言的教程

C语言,相对于汇编有更好的可读性,便于维护等优点。下面实验将使用C语言实

2021-08-10 23:26:23

STM32中重要的C语言知识点总结

的一些例程中,遇到不懂的C语言知识,再去查相关的知识点,这样印象才会深刻些。 下面就列出了一些

2021-04-25 16:42:20

STM32中重要的C语言知识点整理

的一些例程中,遇到不懂的C语言知识,再去查相关的知识点,这样印象才会深刻些。 下面就列出了一些

2021-02-10 17:31:00

7天热门专题 换一换
相关标签