当前位置:首页 > 单片机 > 单片机
[导读]小弟刚刚拿到神舟的板子,那是相对的激动。好大的液晶屏幕,好多资料哦,好强大啊~~。首先需要准备的是《STM32F10xxx参考数据》,我看的是2010年1月10日的版本,不知道今年有没有更新中文用户手册。STM32F107xx微控

小弟刚刚拿到神舟的板子,那是相对的激动。好大的液晶屏幕,好多资料哦,好强大啊~~。

首先需要准备的是《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。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭