logo资料库

广东工业大学物联网工程嵌入式实验报告.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
实验一:跑马灯
实验二:串口实验
实验三:外部中断实验
实验四:TFTLED显示实验
实验五:ADC实验
实验六:内部温度传感器实验
实 验 报 告 课程名称 嵌入式系统原理 学生学院 自动化学院 专业班级 物联网 1 班 学 号 学生姓名 指导教师 3113001555 梁志成 张小波 2015 年 10 月 24 日
实验一:跑马灯 一、 实验目的: 1. 熟悉并掌握 ALIENTEK MiniSTM32 开发板的使用, 2. 熟悉 Keil u Vision3 的嵌入式编程环境, 3. 实现控制这两个灯实现交替闪烁的类跑马灯效果, 4. 如何控制 STM32 的 I/O 口输出。 二、 实验设备: ALIENTEK MiniSTM32 开发板、PC 机、Keil u Vision3 开发软件、MCUISP 下载器 三、 实验内容: 1. 硬件设计: STM32 的 I、O 端口都由 7 个寄存器控制。他们分别是:2 个 32 位的数据寄存器 IDR 和 ODR;1 个 32 位的置位/复位寄存器一个 16 位的复位寄存器 BRR;配置模 式的 2 个 32 位的端口配置寄存器 CRL 和 CRH; 1 个 32 位的锁存寄存器 LCKR; 常用的 IO 端口寄存器只有 4 个:CRL、CRH、IDR、ODR。CRL 和 CRH 控制着每个 IO 口的模式及输出速率。 STM32 的大多 I/O 口是 5V 兼容的,从该芯片的数据手册管脚描述章节查到:I/O Level 标 FT 的就是 5V 电平兼容的。 2. 软件设计: //led.c 文件代码 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_8); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_SetBits(GPIOD,GPIO_Pin_2); } //main 主代码: int main(void) { u8 t=0; delay_init(72);
NVIC_Configuration(); LED_Init(); OLED_Init(); OLED_ShowString(0,0,"ALIENTEK",24); OLED_ShowString(0,24, "0.96' OLED TEST",16); OLED_ShowString(0,40,"ATOM 2014/3/7",12); OLED_ShowString(0,52,"ASCII:",12); OLED_ShowString(64,52,"CODE:",12); OLED_Refresh_Gram(); t=' '; while(1) { OLED_ShowChar(36,52,t,12,1); OLED_ShowNum(94,52,t,3,12); OLED_Refresh_Gram(); t++; if(t>'~')t=' '; delay_ms(500); LED0=!LED0; } } 四、 实验结果: 可以观察左边绿色等和红色灯间歇的跳转。
实验二:串口实验 一、 实验目的: 1. STM32 串口的基本使用方法, 2. 串口的调试方法 二、 实验设备: ALIENTEK MiniSTM32 开发板、PC 机、Keil u Vision3 开发软件、MCUISP 下载器 三、 实验内容: 1.硬件设计: 由于串口 1 与 USB 串口默认是分开的,因此需要通过跳线帽来连接一下。因此把 P4 的 RXD 和 TXD 用跳线帽与 P3 的 PA9 和 PA10 连接起来。 2.软件设计: //main.c 主程序代码 #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" int main(void) { u8 t; u8 len; u16 times=0; Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化为 9600 LED_Init(); while(1) { //初始化与 LED 连接的硬件接口 if(USART_RX_STA&0x80) { len=USART_RX_STA&0x3f;//得到此次接收到的数据长度 printf("\r\n 您发送的消息为:\r\n"); for(t=0;tDR=USART_RX_BUF[t]; while((USART1->SR&0X40)==0);//等待发送结束 printf("\n\n");//插入换行
USART_RX_STA=0; }else { times++; if(times%5000==0) { } printf("\r\nMiniSTM32 开发板 串口实验\r\n"); if(times%200==0)printf("请输入数据,以回车键结束\r\n"); if(times%30==0)LED0=!LED0;//闪烁 LED,提示系统正在运行. delay_ms(10); } } } 四、 实验结果: 如图所示,显示了,串口的调试的成功的。
实验三:外部中断实验 一、 实验目的: 1. 掌握 STM32 基本的 I/O 口控制 2. 掌握外部中断控制输入口 二、 实验设备: ALIENTEK MiniSTM32 开发板、PC 机、Keil u Vision3 开发软件、MCUISP 下载器 三、 实验内容: 1.硬件设计 选取几个 STM32 的 I/O 口作为外部中断输入,根据一下步骤: 1. 初始化 I/O 口为输入 2. 开启 I/O 口复用时钟,设置 IO 口与中断线的映射关系 3. 开启与该 I/O 口相对的线上中断/事件,设置触发条件 4. 配置中断分组(NVIC)并使能中断 5. 编写中断服务函数 2.软件设计 //exti.c #include "key.h" #include "delay.h" #include "usart.h" //外部中断 0 服务程序 void EXTI0_IRQHandler(void) { } delay_ms(10);//消抖 if(KEY2==1) //按键 2 { } LED0=!LED0; LED1=!LED1; EXTI->PR=1<<0; //清除 LINE0 上的中断标志位 //外部中断 15~10 服务程序 void EXTI15_10_IRQHandler(void) { delay_ms(10); //消抖 if(KEY0==0) //按键 0 { LED0=!LED0;
}else if(KEY1==0)//按键 1 { } LED1=!LED1; EXTI->PR=1<<13; //清除 LINE13 上的中断标志位 EXTI->PR=1<<15; //清除 LINE15 上的中断标志位 } //外部中断初始化程序 //初始化 PA0,PA13,PA15 为中断输入. void EXTIX_Init(void) { } RCC->APB2ENR|=1<<2; //使能 PORTA 时钟 JTAG_Set(JTAG_SWD_DISABLE);//关闭 JTAG 和 SWD GPIOA->CRL&=0XFFFFFFF0;//PA0 设置成输入 GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0F0FFFFF;//PA13,15 设置成输入 GPIOA->CRH|=0X80800000; GPIOA->ODR|=1<<13; //PA13 上拉,PA0 默认下拉 GPIOA->ODR|=1<<15; //PA15 上拉 Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发 Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发 Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿触发 MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢占 2,子优先级 2,组 2 MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2)//抢占 2 子优先级 1,组 2 //main.c 主程序代码 #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" #include "exti.h" int main(void) { Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化 LED_Init(); //初始化与 LED 连接的硬件接口 EXTIX_Init(); //外部中断初始化 while(1) { } printf("OK\n"); delay_ms(1000);
} 四、 实验结果: 在编译成功之后,下载代码到 MiniSTM32 开发板上,可以通过按下 KEY0、KEY1、 KEY2,DS0、DS1 跟着按键的变化而变化。
分享到:
收藏