神舟IV学习笔记(一)设置IAR开发环境与流水灯
扫描二维码
随时随地手机看文章
小弟刚刚拿到神舟的板子,那是相对的激动。好大的液晶屏幕,好多资料哦,好强大啊~~。
首先需要准备的是《STM32F10xxx参考数据》,我看的是2010年1月10日的版本,不知道今年有没有更新中文用户手册。STM32F107xx微控制器是互联性产品,有些部分不一样。STM32的开发环境有三种,Keil MDK /IAR EWARM/RIDE三种开发环境,个人感觉IAR比较好点,主要是用破解版的比较稳定。
第一步选择器件,根据芯片的不同选择不同,如图1所示
第二步:设置路径文件,其中$PROJ_DIR$表示的是当前路径,$PROJ_DIR$..表示的当前路径的上面一级。Defined symbols表示的是宏定义:USE_STDPERIPH_DRIVER使用库函数
STM32F10X_CL互联性器件
第三步是设置文件输出的格式,常用的是HEX输出,也能设置BIN格式的输出
第四步是设置链接文件:也就是告诉编译器,器件的RAM和ROM的起始范围与大小。
下面我先做下第一个实验—流水灯实验。我喜欢把每个功能做成两个文件,一个是C文件(源代码),一个是H文件(头文件)。下次需要这个功能的时候,只需要把这两个文件拷贝到工程当中,简单方便。下面是我写的代码:
LED.C
#include "led.h"
void LED_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //打开时钟
GPIO_InitStructure.GPIO_Pin =LED1 | LED2|LED3|LED4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
LED.H
#ifndef __LED_H
#define __LED_H
#include "stm32f10x_conf.h"
#define LED1GPIO_Pin_2
#define LED2GPIO_Pin_3
#define LED3GPIO_Pin_4
#define LED4GPIO_Pin_7
#define LED1_ON()GPIOD->BRR = LED1
#define LED2_ON()GPIOD->BRR = LED2
#define LED3_ON()GPIOD->BRR = LED3
#define LED4_ON()GPIOD->BRR = LED4
#define LED1_OFF()GPIOD->BSRR = LED1
#define LED2_OFF()GPIOD->BSRR = LED2
#define LED3_OFF()GPIOD->BSRR = LED3
#define LED4_OFF()GPIOD->BSRR = LED4
void LED_Configuration(void);
#endif
MAIN.C
void delay(unsigned int num)
{
while(num--);
}
int main(void)
{
/* Setup STM32 system (clock, PLL and Flash configuration) */
SystemInit();
LED_Configuration();
/* Add your application code here
*/
/* Infinite loop */
while (1)
{
LED1_ON();
delay(1000000);
LED1_OFF();
LED2_ON();
delay(1000000);
LED2_OFF();
LED3_ON();
delay(1000000);
LED3_OFF();
LED4_ON();
delay(1000000);
LED4_OFF();
}
}
最后是添加文件,附近有我设置的IAR的模板,大家可以参考下。这样的话就生成的一个模板工程。下次需要写程序的时候,只需要复制这个模板,而没有必要做上面重复的设置啦。关于启动文件的选择:V3.1.2版本的库提供了四个启动文件,分别对应不同型号芯片。
startup_stm32f10x_ld.s对应的是低密度芯片,ld是Low-density的缩写,比如STM32F101xx and STM32F103xx系列中FLASH在16K到32K范围内。
startup_stm32f10x_md.s对应的是中等密度芯片,ld是Medium-density的缩写,比如STM32F101xx and STM32F103xx系列中FLASH在32K到128K范围内。
startup_stm32f10x_hd.s对应的是高密度芯片,ld是High-density的缩写,比如STM32F101xx and STM32F103xx系列中FLASH在256K到512K范围内。
startup_stm32f10x_cl.s对应的是互联型芯片,ld是Connectivity-line的缩写,比如STM32F105xx and STM32F107xx系列的芯片。
神舟IV学习板采用的是STM32F107VCT6芯片,对应的是互联型,使用需要选择的启动文件是startup_stm32f10x_cl.s。