(以下操作环境为Keil5和proteus8.9)
八种输入输出模式及他们的工作模式

分析如下

总线:总线提供了数据在不同组件(如处理器、内存、输入输出设备等)之间传输的路径,使数据能够快速、准确地在系统内流动。
输出控制内内置一个"非"器,GPIO或其他外部设备输入0,经过输出控制,由VDD输出给外部,为1.
模拟信号:由输入电压与3.3的比值,算出传感器感官占比,再判断是否达到触发值。

(存储器基地址在此处查找)

(偏移地址在此处查找)
端口配置位:0~7-----端口配置低寄存器
8~15------端口配置高寄存器
单片机入门:点亮一个led邓并闪烁
左上角创建project和main.c文件:

代码解释:
前三行定义了宏(系统自带,也直接调用其函数)以及基地址和偏移地址,用以存储器与外设的匹配(操作地址=操作内存空间=操作存储器)
RCC是系统复位和时钟控制的缩写(reset and clock control),APB2 是外设时钟使能寄存器(RCC_APB2ENR),默认为不工作状态,通过设置这个寄存器,可以开启或关闭某个外设的时钟供应,从而有效地控制外设的工作状态。当使能某个外设的时钟时,该外设可以正常工作,进行数据传输、处理等操作;当禁止时钟时,外设处于低功耗状态,减少系统的功耗消耗。
将"1"左移2位,IO端口A时钟使能 (I/O port A clock enable)
由软件置'1'或清'0'
0:IO端口A时钟关闭;
1:IO端口A时钟开启
每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器
(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存
器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。以上我们选择的是通用输入模式。
proteus仿真:

步骤:
打开proteus后点击左边方框内的P键,选择器件STM32F103c6和led灯(可选多种其他颜色)--->点击左边方框后图标选择"power"(接地线),依次连接起来

proteus内导入:右击选择编辑内容后选择编辑文件---Keil文件
点击左下角的绿色运行键后灯泡亮并闪烁