院 系: 计算机科学学院
专 业:
年 级:
学 号:
姓 名:
指导教师:
年 月 日
年级
班级
学号
专业
姓名
题目名称
实验一、GPIO实验
实验设计要求
1、首先双击工程文件,编译下载程序,观察实验现象,分析原因
2、修改源代码,使得四个灯依次循环点亮,或两个一组循环点亮(使用两种方式控制LED灯,一种通过对寄存器赋值方式,另一种通过固件函数调用方式)
3、解释主函数中TimingDelay_Decrement的作用,delay()函数是一个死循环,程序通过什么方式从这个死循环中跳出来。
4、在自己的U盘上新建工程添加各类文件,使得自己新建的工程文件能够正常编译(若不能正常编译找出原因),下载后验证实验现象与原始工程是否相同。
实
验
设
计
思
路
(1) 硬件电路设计
在EduKit-M3实验平台上,LED1、LED2、LED3、LED4分别与PC6、PC7、PC8、PC9相连,按键Key与PB9相连。
(2) 软件程序设计
方法一:直接通过寄存器控制管脚的高低电平
->ODR中第八位和第九位来控制PC8和PC9。
->ODR中第七位和第六位来控制PC6和PC7。
()来设置灯亮的长短。
方法二:通过C函数控制管脚的高低电平
()和GPIO_ResetBits()两个函数来直接设置四个位为0或1,从而控制四个灯的亮和灭。
()中的值来控制灯亮的长短。
实
验
步
骤
与
结
果
分
析
,LED3和LED4两个依次闪烁。
,结果为右边的代码
{
GPIOB->ODR = 0xfffffef;
Delay(80);
GPIOB->ODR = 0xfffffdff;
Delay(80);
GPIOB->ODR = 0xfffffcff;
GPIOF->ODR = 0xffffffbf;
Delay(80);
GPIOF->ODR = 0xffffff7f;
Delay(80);
GPIOF->ODR = 0xffffff3f;
}
{
GPIOB->ODR = 0xfffffeff;
Delay(80);
GPIOB->ODR = 0xfffffdff;
Delay(80);
GPIOF->ODR = 0xffffffbf;
Delay(80);
GPIOF->ODR = 0xffffff7f;
Delay(80);
}
temp=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8);
if(temp==1)
{
// GPIO_SetBits(GPIOB,GPIO_Pin_8);
// Delay(80);
// GPIO_ResetBits(GPIOB,GPIO_Pin_9);
// Delay(80);
}
else
{
// GPIO_ResetBits(GPIOB,GPIO_Pin_8);
// Delay(80);
// GPIO_SetBits(GPIOB,GPIO_Pin_9);
// Delay(80);
}
{
GPIO_SetBits(GPIOB,GPIO_Pin_9);
Delay(80);
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
GPIO_SetBits(GPIOB,GPIO_Pin_8);
Delay(80);
GPIO_ResetBits(GPIOB,GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
GPIO_SetBits(GPIOB,GPIO_Pin_7)
嵌入式技术及应用实验报告(中南民族大学) 来自淘豆网m.daumloan.com转载请标明出处.