晒设计方案+MDK5.0下新建STM32F429i工程步步入门
环境说明:
1 Keil uVision5
2 STM32F429I-Discovery_FW_V1.0.1
一 工作目录路径
1 在STM32F429I-Discovery_FW_V1.0.1目录下新建自己的总工程文件夹”My_Projects”.
2 为第一个工程试验新建文件夹”Project1”
二 创建工程
1新建工程
2 专设文件夹组织编译环境文件夹”MDK_ARM”
STM32F429I-Discovery_FW_V1.0.1\My_Projects\Project1\MDK-ARM
3 目标芯片型号选择
4 管理实时管理 不选用 直接ok
5 组织“工程项目” 右键Target1 / Manage Project Items...
6 在Groups增加4个文件组,在Files 添加相关文件
1 CMSIS 路径:Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
startup_stm32f429_439xx.s
2 STM32F4xx_StdPeriph_Driver路径:Libraries\STM32F4xx_StdPeriph_Driver\src所有文件
3 Utilities 路径:Utilities\STM32F429I-Discovery
stm32f429i_discovery.c
4 Projects 可以复制模板
\Projects\Template 下的以下文件到自己的工程目录My_Projects\Project1
main.c ,
main.h,
stm32f4xx_conf.h,
stm32f4xx_it.c,
stm32f4xx_it.h,
system_stm32f4xx.c
7 工程目标选项 右键\工程目标Target1\Options for Target’Target1’...
1 板载8Mhz晶振,2 勾选Use MicroLIB
2 输出hex 文件
3 C/C++ 编译配置
Preprocessor Symbols处理宏:USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_STM32F429I_DISCO,
Warnings:开启所有警告
one elf section per function:每个函数生成一个ELF段
Include Paths:包含路径
索引到自己的以下目录即可
\Libraries\CMSIS\Device\ST\STM32F4xx\Include
\Libraries\CMSIS\Include
\Libraries\STM32F4xx_StdPeriph_Driver\inc
\Utilities\STM32F429I-Discovery
\My_Projects\Project1
4 Debug设置 选择ST-Link Debugger
Settings / Debug /SW
/Flash Download 选择STM32F4xx 2MB flash
5 Utilities
取消默认驱动 Use Debug Driver 选择ST-Link Debugger
三 编译工程
出现大量错误! 宏定义对芯片的选择问题
把stm32f4xx_fsmc.c 禁止参与编译即可
处理:右键 STM32F4xx_StdPeriph_Driver下的stm32f4xx_fsmc.c
去掉include in targert build
编译完成
在main.c增加些测试代码就可以测试下硬件调试
voidInit_GPIO(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType= GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOG,&GPIO_InitStructure);
}
voidLED3_On(void)
{
//GPIO port bit set/reset low register
GPIOG->BSRRL = GPIO_Pin_13;
}
voidLED3_Off(void)
{
//GPIO port bit set/reset high register
GPIOG->BSRRH = GPIO_Pin_13;
}
voidLED3_Toggle(void)
{
//GPIO port output data register
GPIOG->ODR ^= GPIO_Pin_13;
}
intmain(void)
{
/*!< At this stage the microcontrollerclock setting is already configured,
this is done through SystemInit()function which is called from startup
files (startup_stm32f429_439xx.s) beforeto branch to application main.
Toreconfigure the default setting of SystemInit() function, refer to
system_stm32f4xx.c file
*/
/* Add your application code here */
Init_GPIO();
/* Infinite loop */
while (1)
{
LED3_Toggle();
}
}
注意
STM32F4xx_StdPeriph_Driver下的文件按需添加,不然全添加后感觉编译挺慢!