尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

STM32L451CCUx工程开发——实际工程创建

STM32L451CCUx工程开发——实际工程创建 一、下载和安装 Keil可参考【嵌入式工具】Keil 下载安装配置教程大全 - CSDN 博客二、导入 STM32L451CCUx 的 PackPack 下载地址MDK5 - STMicroelectronics STM32L451CCUx导入方法参考使用 keil 添加新的包详细教程_keil 怎么导入 pack 包 - CSDN 博客三、导入 Pack 后创建 STM32L451CCUx 工程在 Keil 中创建工程时需要在Manage Run-Time Environment窗口中勾选CMSIS→CORE提供 Cortex-M4 内核寄存器定义和中断向量支持Device→STM32CubeMX用于启动 CubeMX 生成初始化代码注意Device下没有独立的Startup或HAL选项因为 STM32L451CCUx 的 DFP设备支持包不再包含编译所需的源文件如启动文件、系统初始化文件和 HAL 驱动源码。DFP 现在主要负责调试和烧录相关的底层支持如 FLM 烧录算法、SVD 调试描述文件等而所有与代码编译相关的文件都需要通过 STM32CubeMX 生成并导入到 Keil 工程中。这是因为 STM32L451CCU6 属于 STM32L4 系列该系列官方不再提供标准外设库SPL。ST 从 L4、F7 等后续系列开始全面转向以 HAL 库和 LL 库为核心的软件生态而这些库必须通过 CubeMX 来配置和生成。因此对于 L4 系列的工程使用 CubeMX 已经不是可选项而是标准工作流中的强制前提。简单来说DFP 负责“烧录”和“调试”CubeMX 负责“生成代码”两者配合才能完成一个完整的 L4 工程。所以你需要再下载 STM32CubeMX参考STM32CubeMX 下载及安装教程 - CSDN 博客四、CubeMX 工程配置4.1 配置 RCCMCU 外部接入晶振CubeMX 需要使能 RCCRCC Mode and Configuration复位与时钟控制的模式和配置ModeHigh Speed Clock (HSE)配置高速外部时钟为芯片提供精确的主时钟Crystal/Ceramic Resonator板子上有无源晶振BYPASS Clock Source板子上有有源晶振或外部时钟信号Disable不使用外部高速时钟Low Speed Clock (LSE)配置低速外部时钟常用于 RTC实时时钟的低功耗、高精度时钟源Crystal/Ceramic Resonator板子上有 32.768kHz 的无源晶振BYPASS Clock Source板子上有有源晶振或外部时钟信号Disable不使用外部低速时钟Master Clock Output允许将一个高速内部时钟如系统时钟 SYSCLK、HSE、PLL 等通过专用引脚输出供外部设备使用。可作为外部电路的时钟源或用于调试。LSCO Clock Output允许将一个低速时钟LSE 或 LSI通过专用引脚通常是 PA2输出。常用于为低功耗外部设备提供时钟或在低功耗模式下使用。CRS SYNC Source LSE为 CRS时钟恢复系统选择同步信号源。用于 USB 等需要精确时钟的应用可通过同步信号自动调整内部时钟。ConfigurationParameter SettingsVDD voltage (V)告诉芯片当前供电电压。这会影响 GPIO 输出高电平的幅值以及 ADC 的参考电压。Instruction Cache开启指令缓存将常用代码缓存起来减少等待时间。建议保持开启否则代码执行会变慢。Prefetch Buffer开启预取缓冲区在 CPU 还没执行当前指令时提前从 Flash 读取下一条指令。能显著提升性能建议开启。Data Cache开启数据缓存加快变量读取。保持开启但操作外设寄存器时芯片会自动绕过缓存不用担心冲突。Flash Latency (WS)CPU 速度远快于 Flash必须插入等待周期WS来匹配。0 WS 意味着 CPU 主频极低通常 ≤ 16MHz。HSI / MSI Calibration Value内部时钟的微调值。用于修正内部振荡器因温度、电压变化产生的频率偏差。如果你不使用串口通信或对波特率精度要求不高保持默认即可如果要跑 115200 这样的高波特率建议使用外部晶振HSE因为内部时钟误差较大。MSI Auto CalibrationMSI 自动校准功能。如果启用它会根据外部低速晶振LSE自动校准 MSI 频率以获得更高精度。如果你没接 LSE32.768kHz 晶振保持 Disabled 即可。HSE Startup Timeout高速外部晶振HSE的起振等待超时时间。如果你在上一页的Mode里选了Crystal/Ceramic Resonator但板子上没焊晶振芯片会卡在这里等待 100ms 后才报错跳过。LSE Startup Timeout低速外部晶振LSE的起振等待超时时间5 秒。这个时间一般留给高精度的 RTC实时时钟。如果你不用外部 32.768kHz 晶振在上一页把 LSE 设为Disable即可这个值不用管。Power Regulator Voltage Scale内核电压等级影响性能强度User Constants代码生成辅助工具它的作用是在 CubeMX 图形界面里帮你提前定义好 C 语言中的宏#defineNVIC Settings嵌套向量中断控制器设置复选框全局使能开关Preemption Priority抢占优先级Sub Priority子优先级4.2 GPIO 配置原理图中涉及两个输出 POWER1_EN 和 POWER2_EN 以及一个输入 KEY1配置选择POWERx_EN当 POWER_EN 输出高电平3.3V时电流经 R2 流入 Q1 基极使 NPN 三极管导通其集电极被拉至 0V进而通过 R3 将 P-MOS 管 U1 的栅极拉低使其栅极电压 ≈ 0V 而源极接 VBAT1产生约 -12V 的 Vgs 电压满足导通条件VBAT1 从源极流向漏极后级负载获得供电当 PA3 输出低电平0V时Q1 基极无电流而截止U1 栅极失去下拉路径经 R3 被拉回至与源极相同的 VBAT1 电位此时 Vgs ≈ 0VP-MOS 不具备导通条件而关断后级负载断电。GPIO output levelLowGPIO modeOutput Push Pull推挽输出GPIO Pull-up/Pull-downNo pull-up and no pull-downMaximum output speedLowKEY1该按键电路为低电平有效检测方式常态下由 MCU_VCC 经 10K 电阻 R1 将 KEY1 信号拉至高电平3.3V按键按下时 S1 将 KEY1 短接到 GND 使其变为低电平0V同时 C22100nF用作硬件消抖、D2ESD5Z提供 ESD 静电防护。Input modeNo pull-up and no pull-down4.3 串口配置和调试口配置原理图中涉及了串口和调试端口在 CubeMX 的图形化界面点击引脚选择对应的复用功能就配置完4.4 时钟树配置选择 HSE 输入因为原理图接入了晶振对外部时钟进行输入分频、倍频和输出分频接到各个外设总线上设置为硬件支持的最高频率 80MHz4.5 Project ManagerProject 页面Project Name工程名称Project Location工程的存放路径Application StructureBasic基础所有源文件都在根目录简单明了适合小项目。Advanced高级按外设模块分文件夹如Src/、Inc/、Drivers/更适合大型复杂项目。Toolchain / IDE目标开发环境。选MDK-ARM就意味着生成 Keil uVision 工程.uvprojx文件。如果你用 IAR 或 STM32CubeIDE就在这切换。Minimum Heap Size用于malloc()、calloc()等动态内存分配。如果你不使用动态内存保持默认即可如果用到文件系统、USB 或网络协议栈这个值通常要大幅调大如0x1000。Minimum Stack Size用于存放局部变量、函数调用现场。如果程序出现莫名其妙的死机HardFault很可能就是栈溢出了。Mcu Reference显示当前选择的芯片型号Firmware Package Name使用的 HAL硬件抽象层库版本。只要代码能编译通过不建议轻易更换因为不同版本间可能存在 API 差异。Use latest available version若勾选每次生成代码时会自动联网下载最新的库Code Generator 界面Copy all used libraries将所有 HAL 库文件很大全部复制到你的工程里Copy only the necessary library files仅复制你用到的外设驱动文件Add necessary library files as reference不复制库只在 Keil 工程中保留引用路径指向 CubeMX 安装目录Generate peripheral initialization as a pair of .c/.h files per peripheral为每个外设单独生成.c/.h文件如gpio.c、i2c.c而不是全部塞进main.c
返回列表