历史上的今天
返回首页

历史上的今天

今天是:2024年09月07日(星期六)

2019年09月07日 | mini2440A 裸机编程:串口控制LED灯的亮灭

2019-09-07 来源:eefocus

要求

在PC上发送L11控制开发板led1亮,发送L10控制开发板led1灭;


在PC上发送L21控制开发板led2亮,发送L20控制开发板led2灭;


在PC上发送L31控制开发板led3亮,发送L30控制开发板led3灭;


在PC上发送L41控制开发板led4亮,发送L40控制开发板led4灭;


PC使用串口助手发送;


代码

#include

#include


//0x50000020(L)

//0x50000023(B)

//(字节) UART 通道0 发送缓冲寄存器

#define UTXH0       (*(volatile unsigned int *)0x50000020)//UTXH0

#define UTRSTAT0    (*(volatile unsigned int *)0x50000010)  //R UART 通道0 Tx/Rx 状态寄存器

#define ULCON0      (*(volatile unsigned int *)0x50000000)//  //R/W UART 通道0 线路控制寄存器

#define UCON0       (*(volatile unsigned int *)0x50000004)//  //R/W UART channel 0 control register

#define UBRDIV0     (*(volatile unsigned int *)0x50000028) //  R/W 波特率分频寄存器0

#define GPHCON      (*(volatile unsigned int *)0x56000070)   //R/W 配置端口H 的引脚

//URXH0

//0x50000024(L)

//0x50000027(B)

//W

//(字节) UART 通道0 接收缓冲寄存器 –

#define URXH0       (*(volatile unsigned int *)0x50000024)//URXH0

//UFCON0 0x50000008 R/W UART 通道0 FIFO 控制寄存器 0x0

#define UFCON0      (*(volatile unsigned int *)0x50000008)//URXH0

//UMCON0 0x5000000C R/W UART 通道0 Modem 控制寄存器 0x0

#define UMCON0      (*(volatile unsigned int *)0x5000000c)//URXH0

//灯

//GPBCON  0x56000010  R/W  配置端口 B 的引脚 

#define GPBCON  (*(unsigned int *)0x56000010)

//GPBDAT  0x56000014  R/W  端口 B 的数据寄存器

#define GPBDAT  (*(unsigned int *)0x56000014)


#define PCLK    (50000000)

#define BPS     (115200)


unsigned char buff[3];

char len = 0;


void delay(int time)

{

   int i;

   for(i=0; i}

void uart0_init(void)

{

    GPHCON = (2<<4) | (2<<6);//配置串口引脚功能

    ULCON0 = 0x3;//设置串口0的数据位8,停止位1,校验位无

    UCON0 = (1<<2)|(1<<0);//使能发送,接受模式

    //UBRDIVn = (int)( UART 时钟 / ( 波特率 × 16) ) –1

    UFCON0 = 0;

    UMCON0 = 0;

    UBRDIV0 = PCLK/(BPS*16) -1;

}

void uart0_sendchar(unsigned char date)

{

  UTXH0 = date;

    while((UTRSTAT0&0x04)==0); 

 // UTXH0 = date;  

}


char uart0_recvchar(void)

{

    while((UTRSTAT0&0x01)==0);

    return URXH0;

}

void uart0_recvstring(char *ch,int len)

{

    while(len--)

    {

        *ch = uart0_recvchar();

          ch++;

    }

    *ch = '';

}

void uart0_sendstring(char* string)

{

    while(*string != 0)

    {

       uart0_sendchar(*string);

       string++; 

    }

}

void led_init(void)

{

  GPBCON = (1<<10)|(1<<12)|(1<<14)|(1<<16);

    GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8);

}

void judge_led(char *recv)

{

    if(strcmp(recv,"L10")==0)

        {

           GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8);

        }

        else if(strcmp(recv,"L11")==0)

        {

           GPBDAT = (0<<5)|(1<<6)|(1<<7)|(1<<8);

        }

        else if(strcmp(recv,"L21")==0)

        {

           GPBDAT = (1<<5)|(0<<6)|(1<<7)|(1<<8);

        }

        else if(strcmp(recv,"L20")==0) 

        {

           GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8); 

        }

        else if(strcmp(recv,"L31")==0) 

        {

           GPBDAT = (1<<5)|(1<<6)|(0<<7)|(1<<8); 

        }

        else if(strcmp(recv,"L30")==0) 

        {

           GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8); 

        }

        else if(strcmp(recv,"L41")==0) 

        {

           GPBDAT = (1<<5)|(1<<6)|(1<<7)|(0<<8); 

        }

        else if(strcmp(recv,"L40")==0) 

        {

           GPBDAT = (1<<5)|(1<<6)|(1<<7)|(1<<8); 

        }

}

int main(void)

{

    char recv[4]={0};


  uart0_init();

    led_init();


    while(1)

    {    

      uart0_recvstring(recv,3);  

        uart0_sendstring(recv);

        delay(0x2000);


        judge_led(recv);


        memset(recv,0,strlen(recv)+1);

    }

}

推荐阅读

史海拾趣

Banner Engineering公司的发展小趣事

面对日益严峻的环境问题,Banner Engineering公司积极践行绿色环保理念,推动企业的可持续发展。公司在生产过程中采用了环保材料和工艺,减少了对环境的污染。同时,公司还致力于开发节能高效的传感器产品,帮助客户降低能源消耗和减少碳排放。此外,公司还积极参与公益活动和社会责任项目,为社会和环境做出积极贡献。

这些故事展示了Banner Engineering公司在电子行业发展中不断创新、拓展市场、提升质量、践行环保理念的发展历程。正是这些努力使公司成为了电子行业中具有影响力的企业之一。

Dialog公司的发展小趣事

近年来,Dialog公司通过一系列收购活动实现了快速扩张。例如,Dialog公司收购了Adesto公司,进一步拓展了工业物联网市场。这次收购为Dialog公司带来了一系列新的智能楼宇自动化工业解决方案,为其现有的制造自动化产品提供了非常好的补充。此外,收购Adesto还为Dialog公司带来了近5,000家客户公司,这些公司中大部分对Dialog公司来说是新客户。

Comax Industrial Co Ltd公司的发展小趣事

在电子产品市场竞争日益激烈的背景下,Comax Industrial Co Ltd公司始终坚持品质至上的原则。公司建立了严格的质量管理体系,从原材料的采购到生产制造的每一个环节都进行严格把控。通过持续改进和优化生产流程,公司不断提升产品的品质与性能。这种对品质的执着追求,使得Comax的产品在市场上赢得了广泛的认可与信赖。

AC Photonics Inc公司的发展小趣事

AC Photonics Inc公司自成立以来,一直致力于光电技术的研发与应用。在公司成立初期,研发团队在光子集成技术上取得了重大突破,成功开发出一种高效、稳定的光电转换器。这一技术的问世,不仅提升了数据传输的速度和稳定性,还大大降低了能耗,为公司的业务发展奠定了坚实的基础。随着这一技术的逐步推广和应用,AC Photonics Inc在电子行业中逐渐崭露头角。

Horizon Electronics Enterprises Group公司的发展小趣事

在快速发展的同时,Horizon始终不忘履行社会责任和推动可持续发展。公司积极倡导绿色生产理念,采用环保材料和工艺,减少生产过程中的能源消耗和废弃物排放。同时,Horizon还积极参与社会公益事业和环保项目,为社会的可持续发展贡献自己的力量。这些举措不仅赢得了社会各界的广泛赞誉和认可,也为公司的长远发展奠定了良好的社会基础。

请注意,以上故事均为虚构内容,旨在展示一个假设的电子行业公司可能的发展路径和成就。实际情况可能因公司具体情况和市场环境而有所不同。

Hitachi Chemical Co America Ltd公司的发展小趣事

随着技术产品的成功推出,Horizon开始积极拓展市场。公司首先在国内市场建立了完善的销售和服务网络,通过参加行业展会、举办技术研讨会等方式提升品牌知名度。同时,Horizon也意识到国际市场的巨大潜力,逐步在海外设立分支机构,将产品推向全球市场。通过持续的市场推广和优质的客户服务,Horizon的品牌影响力逐渐增强,成为电子行业内备受瞩目的新兴企业。

问答坊 | AI 解惑

请教:关于RX3400调试问题

我做的一个带RX3400模块的产品一放上DVD(铁壳的),RX3400模块就会输出很多杂波,接收到另一个433MHZ模块发出来的数据完全变形,解不出来,而不放于DVD上数据完全正常,究竟是什么造成的?因为公司要求把433MHZ天线(我用大约17CM的单股线)内置于产品中,所 ...…

查看全部问答>

请问用C8051F410可以产生20KHZ左右的三角波吗?

本人最近初学C8051F410 请问各位单片机高手 用C8051F410可以产生20KHZ左右的三角波吗?…

查看全部问答>

关于PCB设计,提个建议

在做PCB设计的时候,建议把器件标号重新排列,按照PCB板子上器件出现的顺序(比如从左到右,从上到下,从正面到反面这样的顺序)。这样做的好处就是:方便装配。…

查看全部问答>

6410 新做的平台,烧录出错

花了一个星期时间做硬件,而且也花了我,5000多块钱,打样PCB费,加,500块的材料费,昨天兴高采列的,拿到板子,贴片,接上电源,串口,准备读卡器,烧录程序,(我自己有华天正的开发板,按一模一样的硬件,用一模一样的烧录法),一启动,按空格,进入界面,按s ,选0, ...…

查看全部问答>

齿套设计及夹具

要详细内容>>>>>>>>....…

查看全部问答>

关于硬盘驱动的问题!

请哪位高手能帮我解释一下硬盘驱动的原理。最近我要写一份硬盘驱动的详细设计文档,不过硬盘这里我还不是很清楚。    多谢了!…

查看全部问答>

连接LM3S9B96后出现CPU is not halted!

我的板子就是没有接RST(15PIN),而且Jlink的固件也更新为4.26了。…

查看全部问答>

LM3S6911以太网发送后,是否判断完成?有这个功能吗?

各位用过这个功能吗? LM3S6911以太网发送后,是否判断完成?有这个功能吗? 类似于UARTBUSY这个功能的啊! 谢谢哦!…

查看全部问答>

大家都用什么FPGA?

本帖最后由 paulhyde 于 2014-9-15 04:11 编辑 因为做仪器仪表,经常需要什么X-Y方式显示的,之前一直在用学校的开发板DE0,但是听说什么商业化的成品模块不能使用,不知道这个算不算呢?  …

查看全部问答>

关于单片机的位数

LPC2387 - Single-chip 16-bit/32-bit microcontrollers; 512 kB flash with ISP/IAP, Ethernet, USB 2.0, CAN, and 10-bit ADC/DAC - NXP Semiconductors 看到2387芯片手册上这样写,他到底是16位还是32位啊?还有32位比16位的处理速度快么?…

查看全部问答>