


当前工程为如下图:




stm32f103c8t6自带一个led灯,使用PC13引脚就行了,
切记尽量避免使用PB3、PB4,具体看stm32f103c8t6使用PB3和PB4做普通GPIO使用时发现异常
#include "led.h" //绑定led.h
void LED_GPIO_Config(void) {
GPIO_InitTypeDef GPIO_InitStruct; //初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。
//开启RCC时钟
RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE);
//配置初始化,推挽输出方式和LED_G_GPIO_PIN管脚、赫兹
GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
//GPIO口初始化
GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);
}
#ifndef __LED_H_
#define __LED_H_
#include "stm32f10x.h"
#include "sys.h"
#define LED_G_GPIO_PIN GPIO_Pin_13
#define LED_G_GPIO_PORT GPIOC
#define LED_G_GPIO_CLK RCC_APB2Periph_GPIOC
//使用位带操作来实现操作某个IO口的 1个位,由sys.h实现
#define LED PCout(13)
void LED_GPIO_Config(void); //函数定义
#endif
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "stm32f10x.h"
#include "led.h" //引用led文件
int main()
{
/********************************************************************************
* Delay_init(); //本实验使用的是SysTick时钟
* CPU_TS_TmrInit(); //已经使能宏,不需要初始化
* uart1_init(115200); //串口初始化为115200,需要在usart.h中使能
* uart3_init(115200); //串口初始化为115200
********************************************************************************/
/* 初始化 */
LED_GPIO_Config(); //初始化led使用的GPIO口
while (1) {
//LED=0;
//GPIOC->BSRR=GPIO_Pin_13; //设置 GPIOB.5 输出 0,等同 LED0=0;
GPIO_ResetBits (GPIOC, GPIO_Pin_13); //设置 GPIOB.5 输出 0,等同 LED0=0;
Delay_ms(500); //已经在delay.h中初始化
//LED=1;
GPIOC->BRR=GPIO_Pin_13; //设置 GPIOB.5 输出 1,等同 LED0=1;
GPIO_SetBits(GPIOC, GPIO_Pin_13); //设置 GPIOB.5 输出 1,等同 LED0=1;
Delay_ms(500);
}
}

可以看到没有错误,也没有警告。从编译信息可以看出,我们的代码占用 FLASH 大小为:4736 字节(4468+268),所用的 SRAM 大小为: 2704 个字节(40+2664)。这里我们解释一下,编译结果里面的几个数据的意义:
Code:表示程序所占用 FLASH 的大小(FLASH)。
RO-data:即 Read Only-data, 表示程序定义的常量,如 const 类型(FLASH)。
RW-data:即 Read Write-data, 表示已被初始化的全局变量(SRAM)
ZI-data:即 Zero Init-data, 表示未被初始化的全局变量(SRAM)
有了这个就可以知道你当前使用的 flash 和 sram 大小了,所以,一定要注意的是程序的大小不是.hex 文件的大小,而是编译后的 Code 和 RO-data 之和。
本文选择的是ST_Link烧录工具





链接:https://pan.baidu.com/s/1u5t9b-ZMKimluPEt1rCGwg
提取码:0000