您的当前位置:首页正文

STM32开发环境建立实验报告

2023-09-25 来源:年旅网


实验1 STM32开发环境建立

一、 实验目的

1、 掌握嵌入式开发环境的搭建。

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

二、 实验内容

1、 检查MINI STM32开发板的完整性。

(1) ALIENTEK MINI STM32开发板底板一个。 (2) ALIENTEK 2.8寸 TFTLCD模块一个。 (3) 5P MINI USB 数据线一条。

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

4、 KEIL C软件的安装和使用。 5、 JLINK驱动的安装。 6、 跑马灯的实验。

三、 实验设备

硬件: PC机 一台 MINI STM32开发板 一套 软件: RVMDK V3.8 一套 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;//PD.2推挽输出 GPIOD->ODR|=1<<2; //PD.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); } }

因篇幅问题不能全部显示,请点此查看更多更全内容