嵌入式实验报告 篇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开发环境设计程序,利用CC2530GPIO读取按键值并相应对进行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-串口”目录下的实验工程。