MDK是一个集成开发环境,编译、调试、下载于一体。现在总结一下新建一个STM32工程的时候需要设置MDK的那些选项。
一、基本设置
1、注释:选中代码-->右键Asvanced-->Comment Selection(Unco mment Selection)
2、查看宏定义、函数、变量定义:右键 GO To Defi nation XXX
3、查看所有文件的函数:工程目录栏选择Functions栏
4、设置字体背景:Edit-->configuration
二、(Options for Target )
1、Target:右边的Use MicroLIB微库,串口例程可以使用printf
2、Output :Select Folder for Objects编译后输出文件保存的位置
选择需要输出的文件:Debug Information、Create HEX File、Browse information
3、Listing:Select Folder listin,Listing 文件保存的位置
4、C/C++:
5、Utilities选项详见其他文档
三、MDK软件仿真调试
1、设置软件仿真:-->Debug-->选择Use Simulator;(右边的是硬件调试)
-->Target-->Xtal输入晶振8.0MHZ
2、开始调试:
3、运行工具:,复位、全速运行、单步运行、运行到下一步、运行跳出函数、运行至断点;(代码前面的黑块可设置断点,全速运行到断点暂停)
4、watch1工具:输入变量名可查看代码中的变量值(局部变量需要跳进该函数时才能查看)
5、USART#1窗口,串口调试终端
6、Logic Analyzer:逻辑分析仪,电极setup输入引脚PORTC.3可查看电平状态
问题:
MDK不能软件仿真,在SetSysClockTo72这个函数卡主跳不出去,导致程序无法继续。
解决:Debug选项卡里Dialog DLL空不太对,改成DARMSTM.DLL -pSTM32F103VE
最后一个不能是107VC的型号,这里可能另有其他原因,暂时用103ZE代替
四、设置工程的外部晶振
由于STM32F10x库官方采用的是默认的外接8MHz晶振,使用外接12MHz的晶振,会造成很多的问题,如USART的波特率不正确,Systick走时不准等问题,在无论是在实际调试还是在软件模拟中都会发现这个情况,下面我们就通过简单的三个步骤就可以让你随意的使用4—16MHz之内任何频点的晶振,
第一步,打开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,确定保存,再编译,调试,你就会发现,所有的参数都回归的正常轨道。
五、芯片选型和宏定义
1、C/C++宏定义:STM32F10X_CL:代表的是使用STM32F105和STM32F107系列处理器
103的处理器可以使用:STM32F10X_HD(高内存)