STM32学习笔记整理之(1)——MDK的设置

本文详细介绍了使用MDK集成开发环境创建STM32工程时的设置选项,包括基本设置、目标选项、软件仿真调试及外部晶振设置等。还解决了软件仿真卡住的问题,并提供了芯片选型和宏定义的相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MDK是一个集成开发环境,编译、调试、下载于一体。现在总结一下新建一个STM32工程的时候需要设置MDK的那些选项。

一、基本设置

1、注释:选中代码-->右键Asvanced-->Comment Selection(Unco mment Selection)

2、查看宏定义、函数、变量定义:右键 GO To Defi nation XXX

3、查看所有文件的函数:工程目录栏选择Functions

4、设置字体背景:Edit-->configuration

 

二、(Options for Target 

1Target:右边的Use MicroLIB微库,串口例程可以使用printf 

2Output Select Folder for Objects编译后输出文件保存的位置

选择需要输出的文件:Debug InformationCreate HEX FileBrowse information 

3ListingSelect Folder listinListing 文件保存的位置

4C/C++

 

5Utilities选项详见其他文档

 

 

三、MDK软件仿真调试

1、设置软件仿真:-->Debug-->选择Use Simulator;(右边的是硬件调试)

-->Target-->Xtal输入晶振8.0MHZ

2开始调试:

3运行工具:,复位、全速运行、单步运行、运行到下一步、运行跳出函数、运行至断点;(代码前面的黑块可设置断点,全速运行到断点暂停)

4watch1工具:输入变量名可查看代码中的变量值(局部变量需要跳进该函数时才能查看)

5USART#1窗口,串口调试终端

6Logic Analyzer:逻辑分析仪,电极setup输入引脚PORTC.3可查看电平状态

问题:

MDK不能软件仿真,在SetSysClockTo72这个函数卡主跳不出去,导致程序无法继续。

解决:Debug选项卡里Dialog DLL空不太对,改成DARMSTM.DLL   -pSTM32F103VE

最后一个不能是107VC的型号,这里可能另有其他原因,暂时用103ZE代替


四、设置工程的外部晶振

由于STM32F10x库官方采用的是默认的外接8MHz晶振,使用外接12MHz的晶振,会造成很多的问题,如USART的波特率不正确,Systick走时不准等问题,在无论是在实际调试还是在软件模拟中都会发现这个情况,下面我们就通过简单的三个步骤就可以让你随意的使用416MHz之内任何频点的晶振,

第一步,打开stm32f10x.h,将 

#define HSE_VALUE    ((uint32_t)8000000) 

修改为: 

#define HSE_VALUE    ((uint32_t)12000000) 

  

第二步,打开system_stm32f10x.c,修改PLL参数,将 

/*  PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ 

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |                                          RCC_CFGR_PLLMULL)); 

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);  

修改为:   

/*  PLL configuration: PLLCLK = HSE * 6 = 72 MHz */ 

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |                                          RCC_CFGR_PLLMULL)); 

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);      

至此,原文件已经修改完成,如果你想将主频修改至其他频率,请自行修改。

 

第三步,打开STM32工程,选择Projects-Options for target ***,找到Target标签,外接的晶振默认还是8MHz,我们将外接的晶振参数修改为12MHz,确定保存,再编译,调试,你就会发现,所有的参数都回归的正常轨道。

 

五、芯片选型和宏定义

1C/C++宏定义:STM32F10X_CL:代表的是使用STM32F105STM32F107系列处理器

103的处理器可以使用:STM32F10X_HD(高内存)



### STM32学习资源推荐 对于希望深入学习STM32微控制器的开发者来说,获取高质量的学习资料至关重要。以下是几个方向可以帮助找到适合的学习材料: #### 官方文档 STMicroelectronics 提供了详尽的技术手册和数据表,这些官方文档涵盖了从基础到高级的各种主题[^1]。通过访问 ST 的官方网站,可以下载最新的芯片规格书、应用笔记以及固件库。 #### 社区分享与博客文章 网络上存在大量由经验丰富的工程师撰写的STM32学习笔记,例如提到的“Stm32学习笔记,3万字超详细”的内容就非常有价值。这类笔记通常会结合实际项目经历来解释复杂的概念,并提供实用的操作指南。此外,“【笔记】STM32篇”这样的记录也强调了实践的重要性——鼓励读者亲自尝试编码过程以加深理解[^2]。 #### 开发环境搭建指导 为了顺利开展基于STM32项目的开发工作,熟悉如何配置IDE(如Keil MDK或者STM32CubeIDE),安装必要的驱动程序也是必不可少的一环。许多在线教程都会详细介绍这一流程并附带截图说明以便于新手快速上手。 #### 中断处理函数解析 针对具体功能模块比如外部中断线(EXTI),需要注意不同版本API间可能存在的细微差异。虽然有说法指出`EXTI_ClearFlag` 和 `EXTI_ClearITPendingBit` 在某些实现里表现一致但实际上它们各自承担着不同的职责,在特定场景下选用合适的清除方法能够提高系统的稳定性和效率。 ```c // 示例代码展示如何正确使用上述两个定义 void EXTI0_IRQHandler(void){ if(__HAL_GPIO_EXTI_GET_FLAG(GPIO_PIN_0)!=RESET){ __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_0); // 使用此方式清标志位更直观些 /* Add your application code here */ } } ``` #### PDF资源整合建议 如果偏好纸质阅读体验,则可以通过搜索引擎查找关键词组合:“stm32 学习 教程 pdf”,这样往往能找到一些整理成册的手册文件可供离线查看。不过要注意甄别来源可靠性以免误信过期信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值