1、时钟系统:
单片机时钟的特点:
- 现代计算机系统中必有时钟
- 高级的单片机系统中,存在不同频率的时钟
时钟的本质是同步,时钟频率越高,CPU执行效率越快。
HSE:高速外部时钟
LSE:低速外部时钟
HIS:高速内部时钟
LSI:低速内部时钟
内部时钟:集成在芯片内部,无需额外的硬件,成本低,精度差
外部时钟:需要在芯片外部添加时钟源电路,成本高,精度高。
高速:为系统提供时钟。
低速:用于RTC,看门狗等不需要很快速的的外设。
2、GPIO:
STM32F103C8T6一共有48个引脚,按A,B,C组分,每组16个引脚,编号0`15。
GPIO支持8种工作模式,输出模式有:推挽输出、开漏输出、复用推挽输出、复用开漏输出,输入模式有:上拉输入、下拉输入、浮空输入、模拟输入
- 推挽输出:
当输出控制输出为高电平时,P-MOS管导通,N-MOS管断开,VDD经过P-MOS管从S-G-D流出,I/O引脚输出VDD;当输出控制输出为低电平时,N-MOS管导通,P-MOS管断开,VSS经过N-MOS管从S-G-D流出,I/O引脚输出VSS;这实现了输出控制通过控制VDD和VSS接到I/O口,提高输出引脚的驱动能力和电路的负载能力。
- 开漏输出:
开漏模式下输出控制不会控制P-MOS管,输出控制为低电平时,I/O口相当于接到VSS;输出控制为高电平时,依靠内部上拉,N-MOS管断开,I/O口直接与VDD相连,输出VDD;依靠外部上拉,I/O口输出VCC。输出控制只需要提供很小的三级驱动电流,外部电压VCC经过上拉电阻,可以负载提供较高的驱动电流,还可以实现电平转换。
- 复用功能输出:I/O口不受GPIO控制器控制,由片上外设控制。复用体现在选择器上。
-
- 上拉输入:上拉电阻开关闭合,当外界I/O口没有输入信号时,读取的引脚为VDD,为高电平。
- 下拉输入:下拉电阻开关闭合,读取的引脚为VSS,为低电平。
- 浮空输入:上拉下拉电阻开关均闭断开,I/O口直接接到肖特基触发器,此时I/O口悬空,读取电平不确定。
- 模拟输入:上拉下拉电阻开关均闭断开,TTL肖特基触发器关上,I/O口直接接到模拟输入。
设置了时钟频率,如何去判断设置的时钟频率是否正常?
- 软件方法,
使用HAL库提供的函数HAL_RCC_GetSysClockFreq(),获取系统时钟频率,再通过串口打印或者debug调试显示结果。
- 硬件方法:PA8可以复用为MCO引脚,对外提供时钟输出。用示波器监控该引脚的输出来判断我们的系统时钟是否设置正确。
先配置PA8为RCC_MCO功能
然后在时钟配置界面,选择输出哪一个时钟:
在时钟配置函数里,有这样一个参数:FLASH_LATENCY_x
可设置的值有:
FLASH_LATENCY_0、FLASH_LATENCY_1、FLASH_LATENCY_2
FLASH_LATENCY_2的意思是:
Flash存储器有两个64位缓存器组成的预取缓冲器,使得CPU可以工作在更高频率,同时需要根据不同的系统时钟(SYSCLK)频率设置对应的等待周期(LATENCY)。
通常系统时钟为72MHz,则需要设置2个等待周期(LATENCY),否则读写Flash可能出错,导致死机等情况。