ARM实训报告汇总.docx

上传人:b****1 文档编号:1708731 上传时间:2022-10-23 格式:DOCX 页数:15 大小:852.19KB
下载 相关 举报
ARM实训报告汇总.docx_第1页
第1页 / 共15页
ARM实训报告汇总.docx_第2页
第2页 / 共15页
ARM实训报告汇总.docx_第3页
第3页 / 共15页
ARM实训报告汇总.docx_第4页
第4页 / 共15页
ARM实训报告汇总.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

ARM实训报告汇总.docx

《ARM实训报告汇总.docx》由会员分享,可在线阅读,更多相关《ARM实训报告汇总.docx(15页珍藏版)》请在冰豆网上搜索。

ARM实训报告汇总.docx

ARM实训报告汇总

实训一、绘出STM32开发板的MCU外围硬件连接图

学生:

吴磊郑黄庆阿不力孜

指导老师:

王宜结

电子工程学院电子信息工程

一、实训目的

1.握STM32开发板的封装和引脚

2.能够测量开发板外围器件与STM32芯片的实际连接,并画出电路图

二、实训内容

1.画出开发板上MCU与发光二极管DS0、DS1的连接示意图

2.画出开发板上MCU与按键KEY0、KEY1、KRY2、KEYM的连接示意图

3.画出开发板上MCU与24C02芯片的连接示意图

4.画出开发板上MCU与W25X16芯片的连接示意图

5.画出开发板上MCU与温度传感器18B20的连接示意图

6.画出开发板上MCU与2.8寸液晶的连接示意图

7.画出开发板上MCU与红外接收头的连接示意图

8.画出开发板上MCU与PL2302芯片的连接示意图

三、实训过程

1、MCU

图1

图1中上部的BOOT1用于设置STM32的启动方式,其对应启动模式如下表所示:

表1

我们用串口下载代码,则配置BOOT0为1,BOOT1为0即可,如果想让STM32一按复位键就开始跑代码,则需要配置BOOT0为0,BOOT1随便设置都可以。

2、LED

图2

其中PWR是系统电源指示灯,为蓝色。

LED0和LED1分别接在PA8和PD2上,PA8还可以通过TIM1的通道1的PWM输出来控制DS0的亮度。

为了方便大家判断,我们选择了DS0为红色,DS1为绿色的LED灯。

3、按键

图3

KEY0、KEY1和KEY2用作普通按键输入,分别连接在PA13、PA15和PA14上。

WK_UP按键连接到PA0(STM32的WKUP引脚),它除了可以用作普通输入按键外,还可以用作STM32的唤醒输入。

4、EEPROM

ALIENTEKMiniSTM32自带了24C02的EEPROM芯片,该芯片的容量为2Kbit,也就是256个字节。

图4

这里我们把A0~A2均接地,对24C02来说也就是把地址位设置成了0了。

5、SPIFLASH

ALIENTEKMiniSTM32开发板载有SPIFLASH芯片W25X16,该芯片的容量为2M字节。

图5

6、温度传感器

图6

7、2.8寸液晶连接示意图

图7

8、红外接收头示意图

REMOTE_IN接到P2的第二脚,也没有直接接在MCU的IO口上,目的也是防止IO口在做其他功能使用的时候,收到红外信号的干扰。

图8

8、USB采用PL_2303芯片,为28引脚的SSOP封装。

如图9.

图9

 

实训二:

跑马灯与按键输入

学生:

吴磊郑黄庆阿不力孜

指导老师:

王宜结

电子工程学院电子信息工程

一、实训目的

1.掌握STM32项目开发流程;

2.学会画出算法流程图;

3.掌握按键、LED的控制编程;

二、实训内容

1、实现LED0和LED1交替闪烁,间隔300ms.

三、实训要求

1、用C语言实现算法;

2、建立工程项目,生成目标文件;

3、将目标文件编程下载到开发板,观察结果是否满足设计要求;

四、硬件设计

该实验的硬件电路在ALIENTEMMiniSTM32开发板上默认是已经连接好了的。

DS0接PA8,DS1接PD2。

所以在硬件上不需要动任何东西。

其连接原理图如下:

五、软件程序

#include

#include

#include"led.h"

voidLED_Init(void)//该函数的功能就是用来实现配置PA8和PD2为推挽输出,在配置STM32外设的时候,任何时候都要先使能该外设时钟

{

RCC->APB2ENR|=1<<2;//使能PORTA时钟,APB2ENR是APB2总线上的外设时钟使能寄存器

RCC->APB2ENR|=1<<5;//使能PORTD时钟//端口时钟的配置A和D看一下寄存器APB2ENR各位的含义

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输出高

}

该代码里面就包含了一个函数voidLED_Init(void),该函数的功能就是用来实现配置,PA8和PD2为推挽输出。

在配置STM32外设的时候,任何都要先使能该钟!

APB2ENR是APB2总线上的外设时钟使能寄存器。

#include"sys.h"

#include"usart.h"

#include"delay.h"

#include"led.h"

intmain(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);

}

}

代码先包含了"#include"led.h"这句,使得LED0、LED1、LED_Init等能在main函数里被调用。

接下来,main函数先配置系统时钟为72M,然后把延时函数初始化一下。

接着就是调用LED_Iint来初始化PA8和PD2为输出。

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

 

实训三:

串口实验

学生:

吴磊郑黄庆阿不力孜

指导老师:

王宜结

电子工程学院电子信息工程

一、实验目的

1.掌握STM32项目开发流程;

2.学会画出算法流程图;

3.掌握串口的控制编程;

二、实验内容

1.用串口助手通过USART1向STM32F103发送“A”,STM32F103收到后发送回来信息“hello!

”。

三、实训要求

1.用C语言实现算法;

2.建立工程项目,生成目标文件;

3.将目标文件编程下载到开发板,观察结果是否满足设计要求;

四、硬件设计

五、软件设计

#include"sys.h"

#include"usart.h"

struct__FILE

{

inthandle;

};

/*FILEistypedef’dinstdio.h.*/

FILE__stdout;

_sys_exit(intx)

{

x=x;

}

intfputc(intch,FILE*f)

{

while((USART1->SR&0X40)==0);//循环发送,直到发送完毕

USART1->DR=(u8)ch;

returnch;

}

#endif

#ifdefEN_USART1_RX//如果使能了接收

u8USART_RX_BUF[64];//接收缓冲,最大64个字节.

u8USART_RX_STA=0;//接收状态标记

voidUSART1_IRQHandler(void)

{

u8res;

if(USART1->SR&(1<<5))//接收到数据

{

res=USART1->DR;

if((USART_RX_STA&0x80)==0)//接收未完成

{

if(USART_RX_STA&0x40)//接收到了0x0d

{

if(res!

=0x0a)USART_RX_STA=0;//接收错误,重新开始

elseUSART_RX_STA|=0x80;//接收完成了

}else//还没收到0X0D

{

if(res==0x0d)USART_RX_STA|=0x40;

else

{

USART_RX_BUF[USART_RX_STA&0X3F]=res;

USART_RX_STA++;

if(USART_RX_STA>63)USART_RX_STA=0;}

}

}

}

}

#endif

voiduart_init(u32pclk2,u32bound)

{

floattemp;

u16mantissa;

u16fraction;

temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV

mantissa=temp;//得到整数部分

fraction=(temp-mantissa)*16;//得到小数部分

mantissa<<=4;

mantissa+=fraction;

RCC->APB2ENR|=1<<2;//使能PORTA口时钟

RCC->APB2ENR|=1<<14;//使能串口时钟

GPIOA->CRH&=0XFFFFF00F;

GPIOA->CRH|=0X000008B0;//IO状态设置

RCC->APB2RSTR|=1<<14;//复位串口1

RCC->APB2RSTR&=~(1<<14);//停止复位

USART1->BRR=mantissa;//波特率设置

USART1->CR1|=0X200C;//1位停止,无校验位.

#ifdefEN_USART1_RX//如果使能了接收

USART1->CR1|=1<<8;//PE中断使能

USART1->CR1|=1<<5;//接收缓冲区非空中断使能

MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级

#endif

}

 

实训四:

外部中断实验

学生:

吴磊郑黄庆阿不力孜

指导老师:

王宜结

电子工程学院电子信息工程

一、实训目的

1.掌握STM32项目开发流程;

2.学会画出算法流程图;

3.掌握外部按键中断、LED的控制编程;

二、实训内容

1.按键KEY0,在中断程序中控制LED0亮;

2.按键KEY1,在中断程序中控制LED0熄灭;

三、实训要求

1.用C语言实现算法;

2.建立工程项目,生成目标文件;

3.将目标文件编程下载到开发板,观察结果是否满足设计要求;

四、硬件设计

五、软件设计

#include"exti.h"

#include"led.h"

#include"key.h"

#include"delay.h"

#include"usart.h"

//外部中断0服务程序

voidEXTI0_IRQHandler(void)

{

delay_ms(10);//消抖

if(KEY2==1)//按键2

{

LED0=!

LED0;

LED1=!

LED1;

}

EXTI->PR=1<<0;//清除LINE0上的中断标志位

}

//外部中断15~10服务程序

voidEXTI15_10_IRQHandler(void)

{

delay_ms(10);//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1