这是本文档旧的修订版!


点灯:

#include "stm32f10x.h"                  // Device header

int main(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    // 开启APB2外设时钟
    
    GPIO_InitTypeDef GPIO_InitStructure;
    // GPIO_InitTypeDef类型的结构体,名为GPIO_InitStructure,这是官方推荐用名
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    // 13引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    // 模式:universal push-pull output (通用推挽输出)
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    // 速度50Mhz
    
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    // 初始化GPIOC
    
// GPIO_SetBits(GPIOC, GPIO_Pin_13);   // 置高电平
    GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 置低电平
    // 看你的led另一个脚接的正极还是负极来定,此处led另一脚接正
    
    while(1);
    // 主循环保持程序运行,不断执行空操作
}

GPIO简介: stm32f103中的GPIO电路结构:

保护电路:输入电压大于3v3,保护二极管从输入向3v3放电;输入电压小于0v,保护二极管从0v向输入放电;输入介于0v-3v3,保护二极管不放电,正常工作。
上/下拉电阻:当引脚处于悬空状态时,引脚电位极易受到外界扰动而改变。在悬空时,上/下拉电阻可以保持设置的电位。上/下拉电阻阻值较大,为弱上/下拉。
下图是施密特触发器的工作原理: