当前位置:文档之家› STM开发环境建立实验报告

STM开发环境建立实验报告

S T M开发环境建立实
验报告
集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]
实验1 STM32开发环境建立
一、实验目的
1、掌握嵌入式开发环境的搭建。

2、熟悉MINI STM32开发板的基本使用。

二、实验内容
1、检查MINI STM32开发板的完整性。

(1)ALIENTEK MINI STM32开发板底板一个。

(2)ALIENTEK 寸 TFTLCD模块一个。

(3)5P MINI USB 数据线一条。

2、上电检测开发板能否正常工作,注意两个USB口的区别。

3、串口驱动的安装。

4、KEIL C软件的安装和使用。

5、JLINK驱动的安装。

6、跑马灯的实验。

三、实验设备
硬件: PC机一台
MINI STM32开发板一套
软件: RVMDK 一套
Windows XP 一套
四、实验步骤
1、检查开发板完整、正常与否;
2、安装开发软件及驱动,并调试;
3、熟悉固件库,编写代码实现跑马灯功能。

1)给工程新增HARDWARE组
程序里main()函数非常简单,先调用delay_init()初始化延时,接着就是调用LED_Init()来初始化GPIOA和GPIOD为输出。

最后在死循环里面实现LED0和LED1交替闪烁,间隔为300ms。

程序见附录
2) 写好程序以后,就编译,看看有没有错误。

如果没有错误的话就下载到
STM32板子上。

五、实验结果和实验总结
实验最后实现了流水灯的运转。

这次实验主要是让我们了解一下STM32开发板的基本使用,大部分人都是初次接触这个开发板和KEILC软件,都对软件操作不太了解,希望通过这几次实验能够了解并熟练地使用这个软件,用这个软件来编程和完成一些功能的实现。

附录C语言代码:(主要功能的)
//初始化端口
void LED_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA时钟
RCC->APB2ENR|=1<<5; //使能PORTD时钟
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X00000003;//PA8 推挽输出
GPIOA->ODR|=1<<8; //PA8 输出高
GPIOD->CRL&=0XFFFFF0FF;
GPIOD->CRL|=0X00000300;//推挽输出
GPIOD->ODR|=1<<2; //输出高
}
//延时nms
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit) SysTick->VAL =0x00; //清空计数器
SysTick->CTRL=0x01 ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
//初始化延迟函数
//SYSTICK的时钟固定为HCLK时钟的1/8
//SYSCLK:系统时钟
void delay_init(u8 SYSCLK)
{
SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟 HCLK/8 fac_us=SYSCLK/8;
fac_ms=(u16)fac_us*1000;
}
//系统时钟初始化函数
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0;
MYRCC_DeInit(); //复位并配置向量表
RCC->CR|=0x00010000; //外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;//抵消2个单位
RCC->CFGR|=PLL<<18; //设置PLL值 2~16
RCC->CFGR|=1<<16; //PLLSRC ON
FLASH->ACR|=0x32; //FLASH 2个延时周期
RCC->CR|=0x01000000; //PLLON
while(!(RCC->CR>>25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟设置成功{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
//主函数
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口while(1)
{
LED0=0;
LED1=1;
delay_ms(300);
LED0=1;
LED1=0;
delay_ms(300);
}
}。

相关主题