嵌入式实验报告(合集9篇)
嵌入式实验报告 篇1
#include ^^
#include
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define led1 P1_0
#define led2 P1_1
void InitIO(void); //IO初始化
void InitUart(void); //串口初始化
void SendString(char*string,uint legth); //发送字符串
uchar temp; //存放接受的数据
char wch[] = ^Welcome to test this program!\\n^;
void DelayXms(unsigned int Count)
unsigned int i;
unsigned int j;
for(i = 0; i < Count; i++)
for(j=10000; j>0; j--);
void InitIO(void)
SLEEPCMD&= ~0X04;
CLKCONCMD= 0X10; //32k和32M时钟使用外部晶体,timer分频8M
while(CLKCONSTA!=0X10); //等待时钟切换
SLEEPCMD= 0X04;
P2DIR= 0x00; //高两位零 若设则最高优先USART0
P1DIR|=0X03; LEDs 灯端口配置
P0DIR|=0X00; //input
PERCFG= 0x00; //UART0默认端口
P1SEL= 0X00;
P0SEL= 0X0c; //P0<3:2>设置成外围应用
void InitUart(void)
U0CSR|= 0x80; //UART方式
U0GCR= 11; //baud_e波特率设为115200
U0BAUD|= 216; //baud_m = BaudRate*2^(28-buad_e)/32M-256
//BaudRate=(256+baud_m)/2^(28-buad_e)x32MHz
UTX0IF= 1; //接收中断标记
U0CSR|= 0X40; //允许接收
URX0IE= 1; //接收中断使能
EA=1; //总中断开关打开
void SendString(char*string,uint lenth)
uintj;
for(j=0; j
{
U0DBUF= *string++; //将要发送字符送入U0DBUF发送寄存器
while(UTX0IF== 0); //等待发送完成
UTX0IF= 0; //清0标志位
}
void main(void)
InitIO();
InitUart();
DelayXms(10);
led1=1; //点亮2个LED灯
led2=1;
SendString(wch,sizeof(wch));
while(1)
{
;//进入无限循环等待中断函数被处触发
}
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
URX0IF = 0; //清中断标志
temp = U0DBUF;
U0DBUF= temp; //将收到的字符发送回去
while(UTX0IF== 0); //等待发送
UTX0IF= 0; //清发送标志
led1= ~led1; //指示中断活动
led2= ~led2;
嵌入式实验报告 篇2
#include
#define D_COUNT 50 //通用延时时间计数
void Delay(unsigned int n)
unsigned int t,tt;
for(tt=0;tt
for(t=0;t<1000;t++)
;
void main( void )
unsigned int i;
P0DIR = 0xff; //设置P0口全部为输出
P1DIR = 0xff; //设置P1口全部为输出
P0 = 0xff; //点亮所有灯
P1 = 0xff;
Delay(D_COUNT);Delay(D_COUNT);Delay(D_COUNT);
P0 = 0; //熄灭所有灯
P1 = 0;
Delay(D_COUNT);Delay(D_COUNT);Delay(D_COUNT);
while(1)
{
for(i=0;i<8;i++)
{
P0= 0x01<
//P1_0^= 1; 取反
Delay(D_COUNT); //设置IO状态后需要一个延时来让我们看到效果
}
P0= 0;
for(i=0;i<8;i++)
{
P1= 0x01<
//P0_0^= 1; 取反
Delay(D_COUNT); //设置IO状态后需要一个延时来让我们看到效果
}
P1= 0;
}
嵌入式实验报告 篇3
项目工程截图
实验指导书截图
由于完全跟随指导书配置实验环境,实验指导书中有一句“可将lib中所有.c文件加入项目”,故fwlib文件夹中有全部sttm32f10x的.c文件。
#include ^^
#define LED_POWER_LA GPIO_ResetBits(GPIOA,GPIO_Pin_3) // 灭灯宏定义
#define LED_POWER_HA GPIO_SetBits(GPIOA,GPIO_Pin_3) // 点灯宏定义
#define LED_POWER_LB GPIO_ResetBits(GPIOB,GPIO_Pin_4) // 灭灯宏定义
#define LED_POWER_HB GPIO_SetBits(GPIOB,GPIO_Pin_4) // 点灯宏定义
#define LED_POWER_LC GPIO_ResetBits(GPIOC,GPIO_Pin_5) // 灭灯宏定义
#define LED_POWER_HC GPIO_SetBits(GPIOC,GPIO_Pin_5) // 点灯宏定义
#define LED_POWER_LD GPIO_ResetBits(GPIOD,GPIO_Pin_6) // 灭灯宏定义
#define LED_POWER_HD GPIO_SetBits(GPIOD,GPIO_Pin_6) // 点灯宏定义
void gpio_init(void) // 配置PB7为普通推挽输出模式,来控制指示灯“User1”
GPIO_InitTypeDef GPIO_InitStructureA;
GPIO_InitTypeDef GPIO_InitStructureB;
GPIO_InitTypeDef GPIO_InitStructureC;
GPIO_InitTypeDef GPIO_InitStructureD;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
= GPIO_Pin_3;
= GPIO_Speed_50MHz;
= GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructureA);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
= GPIO_Pin_4;
= GPIO_Speed_50MHz;
= GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructureB);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);
= GPIO_Pin_5;
= GPIO_Speed_50MHz;
= GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructureC);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);
= GPIO_Pin_6;
= GPIO_Speed_50MHz;
= GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructureD);
void TIM2_Configuration(void) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;// 定义一个定时器初始化参数的结构体
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);// 开启APB1的TIM2外设时钟
TIM_DeInit(TIM2); //将外设TIM2的寄存器重设为缺省值
(7200 - 1);// 设置预分频系数为(7200-1)
_CounterMode_Up; // 向上计数模式
;// 自动加载值设置,累计10000个时钟周期(1s)后溢出
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);// 根据TIM_TimeBaseStructure中指定的参数初始化TIM2里的相关寄存器
TIM_ClearFlag(TIM2,TIM_FLAG_Update);// 清除溢出中断标志
TIM_ITConfig(TIM2, TIM_IT_Update|TIM_IT_Trigger, ENABLE);// 使能TIM2中断,允许更新
TIM_Cmd(TIM2, ENABLE);// 使能TIM2外设
void TIM2_NVIC_Configuration(void) {
NVIC_InitTypeDef NVIC_InitStructure; // 定义NVIC初始化节结构体
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); // 选择中断优先级分组0
= TIM2_IRQn; // 选择配置TIM2全局中断
= 0; // 抢占优先级0
=1; // 响应优先级 1
= ENABLE; //使能TIM2中断通道
NVIC_Init(&NVIC_InitStructure); // 根据以上配置初始化NVIC
int led_state=0;
void TIM2_IRQHandler(void) {
if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ) // 1S时间到,检测到TIM2中断
led_state++; // 状态加1
switch (led_state)
case 1: // 状态1:灭掉User1,点亮Status
LED_POWER_LD;
LED_POWER_HA;
break;
case 2: // 状态2:灭掉Status,点亮RS485-R
LED_POWER_LA;
LED_POWER_HB;
break;
case 4: // 状态3:灭掉RS485-R,点亮RS485-T
LED_POWER_LB;
LED_POWER_HC;
break;
case 7: // 状态4:灭掉RS485-T,点亮User1
LED_POWER_LC ;
LED_POWER_HD ;
led_state=-3; // led_state置0,下个1s时间到后可再次进入状态1
break;
default: break;
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update); // 清除中断标志位
int main(void)
gpio_init();
TIM2_NVIC_Configuration();
TIM2_Configuration();
GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);
while(1){
由于;// 自动加载值设置,累计10000个时钟周期(1s)后溢出 ,故可将void TIM2_IRQHandler(void)函数中led_state变量的值作为时间间隔的考量单位,通过间隔不同led_state时点亮led实现分别间隔1s、2s、3s、4s循环点亮4个led
嵌入式实验报告 篇4
1.使用USB仿真器连接PC机和任意一个传感器节点模块,模块电源开关处于“ON”档,使用电池给模块供电(如电池电量低插上USB电缆,可一边充电一边使用)。
2.启动IAR开发环境,打开“...\\基础传感器实验\\1-5基础例程\\3-按键控制”目录下的实验工程。
4.观察现象,可以看到2个发光二极管都没有亮起。
5.按下模块中间的“KEY”按键,观察2个发光二极管的状态。
6.重复按键操作,尝试长按或短按,观察发光二极管状态。修改程序中的延时数值(下图中红点行)后再重复上面操作,体会不同延时下的效果。
嵌入式实验报告 篇5
用gpio控制4个led实现循环点亮(跑马灯)
用gpio控制4个led实现显示学号,每个数字间隔一段便于区分,从上至下取4位表示一个数,分别为0001 0111 0010 0010 0111 0010,即:174474
嵌入式实验报告 篇6
1)硬件:通用节点或任意传感器节点一个、USB仿真器、USB电缆、PC机;
2)软件:IAREmbedded Workbench for MCS-51、串口调试工具;
嵌入式实验报告 篇7
1) 硬件:传感器节点一个、USB仿真器、PC机;
2) 软件:IAREmbedded Workbench for MCS-51;
嵌入式实验报告 篇8
1)熟悉Zigbee硬件模块相关接口;
2)使用IAR开发环境设计程序,利用CC2530的GPIO读取按键值并相应对进行LED发光二极管的亮灭操作;
嵌入式实验报告 篇9
1.使用USB仿真器连接PC 机和ZIGBEE模块。将系统配套USB线一端连接PC 机,一端连接ZIGBEE模块的MINI-US接口上。
2.连接USB电缆时,需要安装USB转串口的驱动程序,在“...\\基础传感器实验\\1-5基础例程\\2-串口”目录下运行程序“”安装驱动,重新拔插USB电缆,待驱动自动加载好,在“我的电脑右键——属性——设备管理器”中可以发现如下虚拟串口条目“USB-SERIALCH340(COMXX)”。记住这里的串口号码“COMXX”
3.启动IAR开发环境,打开“...\\基础传感器实验\\1-5基础例程\\2-串口”目录下的实验工程。
声明:本站所有文章资源内容,如无特殊说明或标注,均来源于用户上传或互联网资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除,联系方式在页脚,本站核实后会在一个月内进行删除。