如何判断时钟频率设置是否正确? 1. 软件方法:使用HAL库提供的函数HAL_RCC_GetSysClockFreq(), 获取系统时钟频率,再通过串口打印或者debug调试显示结果。 2. 硬件方法:PA8可以复用为MCO引脚,对外提供时钟输出。 用示波器监控该引脚的输出来判断我们的系统时钟是否设置正确。 硬件方法的具体配置如下: 2.1先配置PA8为RCC_MC0功能 2.2在时钟配置界面,选择输出哪一个时钟: 时钟配置参数 FLASH_LATENCY_x 的说明: 可设置参数: FLASH_LATENCY_0 时钟周期:0<systick<24MHZ FLASH_LATENCY_1 时钟周期:24<systick<48MHZ FLASH_LATENCY_2 时钟周期:48<systick<72MHZ FLASH_LATENCY_2的意思是: Flash存储器有两个64位缓存器组成的预取缓冲器,使得CPU可以工作在更高频率,同时需要根据不同的系统时钟(SYSCLK)频率设置对应的等待周期(LATENCY)。
通常系统时钟为72MHZ,则需要设置两个等待周期,否则读写flash可能出错,导致死机等情况。
常用的GPIO模式: 推挽输出,上拉输入,设置复用功能
课后作业:
- main()函数是必须的吗?能不能是mymain(),yourmain()?
- main()之前发生了什么事?
- HAL_Init()函数里面做了哪些工作?
- 中断组别和中断的关系是什么?STM32F103有哪些中断组别,对应的中断有什么特点?
- 滴答定时器最大能计数多少?怎么计数的?默认的计数频率是多少?
- HAL库初始化GPIO的套路是什么?
- HAL库初始化UART的套路是什么?
- 什么是半主机模式?和重定向printf有何关系?
- 怎样重定向printf?
- microlib和C库是什么关系?使用microlib的话又该怎样重定向printf?
- AT指令有什么特点?该如何利用这个特点来解析AT设备的反馈信息?
- ESP8266的网络数据格式是怎样的?如果是你,你会怎样解析一段ESP8266的网络数据?
|