qq钓鱼网站在线生成器临沂网站建设怎么样
qq钓鱼网站在线生成器,临沂网站建设怎么样,做一个网站平台的流程是什么,微信公众号创建流程#x1f3ac; 渡水无言#xff1a;个人主页渡水无言 ❄专栏传送门#xff1a; 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门#xff1a; 《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏》 ⭐️流水不争先#xff0c;争的是滔滔不绝…渡水无言个人主页渡水无言❄专栏传送门《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》❄专栏传送门《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏》⭐️流水不争先争的是滔滔不绝博主简介第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生| 省级优秀毕业生获得者 | csdn新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生在这里主要分享自己学习的linux嵌入式领域知识有分享错误或者不足的地方欢迎大佬指导也欢迎各位大佬互相三连目录前言一、单片机系统结构二、时钟系统核心原理从 “树” 的视角理解2.1、整体情况两棵树2.2树根时钟源2.3、树干2.4、树枝和树叶三、时钟配置实验3.1、CubeMX 完整配置步骤3.1.1、创建新工程及选择芯片型号3.1.2、选择SYS 外设的核心配置及设置引脚模式3.1.3打开Clock Configuration3.1.4、pc13引脚参数设置3.1.5项目管理与生成3.2、代码编写总结前言STM32 的时钟系统是整个单片机的 “心脏”决定了代码执行速度、外设工作频率。本次博客从时钟树原理入手结合 CubeMX 配置 Keil 实战手把手教你从默认 8MHz 配置到 72MHz 最大频率并通过板载 LED 闪烁直观感受时钟频率差异。一、单片机系统结构单片机的系统可以与电脑类比甚至可以说是一一对应。核心由 3 条总线串联所有外设而所有外设都需要时钟信号驱动AHB 总线高速总线驱动内核、DMA、SRAM 等核心模块APB1 总线低速总线驱动串口、I2C、定时器低速等APB2 总线高速总线驱动 GPIO、ADC、定时器高速等。数字电路可以分为两类下图可以看到单片机内部有许许多多模块红框每个模块都包含记忆性的元件它们都属于时序组合电路所以单片机需要给每一个模块提供时钟信号二、时钟系统核心原理从 “树” 的视角理解2.1、整体情况两棵树STM32 的时钟系统可以类比成一棵 “大树”所有外设和内核的时钟都从这棵树分配而来。左边的时钟树为绝大部分模块提供时钟右边的只为RTC和IWDG模块提供时钟树根时钟源HSI/HSE/PLL树干系统时钟 SYSCLK → AHB 总线时钟 HCLK树枝APB1/APB2 外设总线时钟树叶挂载在总线上的各个外设GPIO、定时器、串口等2.2树根时钟源在我们的stm32最小系统板上LSE和HSE就是指芯片外接的两颗晶振如下图所示2.3、树干目标 SYSCLK方案公式优势适用场景8MHz低成本SYSCLK HSI无外部晶振、电路简单低成本、低精度要求项目8MHz高精度SYSCLK HSE时钟稳定、精度高通信、同步类外设8MHz锁相环学习SYSCLK HSE/2 * 2熟悉 PLL 配置流程学习、调试 PLL 驱动12MHz低成本 PLLSYSCLK HSI/2 * 3成本低 灵活频率中等性能需求的低成本项目12MHz高精度 PLLSYSCLK HSE/2 * 3高精度 灵活频率工业控制、高精度采集72MHz最高性能SYSCLK HSE * 9最大化 MCU 性能高速运算、复杂业务场景2.4、树枝和树叶树枝就是指AHB、APB1、APB2三根总线而树叶就是总线上的各个模块。三、时钟配置实验8MHZ时的时钟频率让led闪烁3.1、CubeMX 完整配置步骤CubeMX新建项目——选型号——选调试接口——再点开clock configuration1.打开STM32CubeMX,新建工程选择芯片2.设置芯片的调试接口如果忘记这个步骤芯片的调试接口将被锁死程序烧录不进去3.1.1、创建新工程及选择芯片型号首先点击File ---点击New project选中STM32F103C8T6,再点击start project3.1.2、选择SYS 外设的核心配置及设置引脚模式在SYS Mode and Configuration栏中按如下配置调试模式Debug选定了Serial WireSW 模式。这是 STM32 最常用的调试接口模式仅需占用SWDIO和SWCLK两个引脚。时基源Timebase Source选定了SysTick。这表示将系统滴答定时器作为 HAL 库的时基来源用于实现HAL_Delay()等延时函数是 STM32 工程的标准配置。并在右侧芯片图中点击PC13设置为GPIO_Output”PA9引脚设置为GPIO_input”3.1.3打开Clock Configuration可以看到这就是上一小节说的两棵时钟树还有一些目前没有用到的模块以后再学如下图所示其中有一个极其特殊的树叶那就是Cortex-M3内核因为我们所写的所有代码都是由其执行的这里HCLK的频率就决定着代码的执行速度。注意stm32cubemax默认的Cortex-M3时钟频率为8MHZ原理如下默认情况下SYSCLK为8MHZAHB的分频器默认情况是/1。所以此时HCLK频率Cortex-M3频率就为8MHZ。这里我们就试一试8MHZ时的时钟频率让led闪烁。3.1.4、pc13引脚参数设置点击GPIO选中对应的引脚即可设置参数设置为开漏模式初值为高电平这样led默认为熄灭。3.1.5项目管理与生成给项目取名、设置位置、选择开发的工具链再点击GENERATE CODE生成3.2、代码编写本次实验原理如下在keil中补齐代码在while写如下代码uint32_t i; HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); for(i 0; i 1000000; i){} HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); for(i 0; i 1000000; i){}为了更准确可以把修改级别优化选项改成level 0优化等级编译速度代码体积执行速度调试友好度适用场景-O0无优化最快最大最慢最好调试时变量 / 行号完整开发调试阶段-O1轻度优化较快较小较快较好初步优化、验证功能-O2中度优化中等更小更快一般正式发布前测试-O3高度优化最慢最小最快差变量可能被优化掉断点可能失效最终量产版本烧录完发现板载LED每秒钟1次比想象中稍快一点因为单片机内核指令流水线的存在让代码执行的速度稍快。总结本次博客从时钟树原理出发完成了 STM32F103 8MHz 时钟配置与 LED 闪烁实战。