串口控制FL2440(S3C2440)的LED

发布者:幸福时光最新更新时间:2019-11-27 来源: eefocus关键字:串口控制  FL2440  S3C2440  LED 手机看文章 扫描二维码
随时随地手机看文章

开发板:FL2440


芯片:S3C2440


功能:程序运行时点亮一个LED,然后利用PC机通过串口发送一个数,开发板读到这个数后点亮另外一个LED。最基本的串口控制。


代码:


Init.s


AREA |DATA|,CODE,READONLY 

ENTRY 

ldr r13, =0x1000 

IMPORT WuqiMain 

b WuqiMain 

END

 

include.h


 1 #define rUTRSTAT0   (*(volatile unsigned *)0x50000010)    //UART 0 Tx/Rx status

 2 #define rULCON0     (*(volatile unsigned *)0x50000000)    //UART 0 Line control

 3 #define rUCON0      (*(volatile unsigned *)0x50000004)    //UART 0 Control

 4 #define rUFCON0     (*(volatile unsigned *)0x50000008)    //UART 0 FIFO control

 5 #define rUBRDIV0    (*(volatile unsigned *)0x50000028)    //UART 0 Baud rate divisor

 6 #define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)

 7 #define RdURXH0()   (*(volatile unsigned char *)0x50000027)

 8 #define rURXH0          (*(volatile unsigned *)0X50000024)

 9 #define rUTXH0  (*(volatile unsigned *)0X50000020)

10 #define rURXH0  (*(volatile unsigned *)0X50000024)

11 

12 #define GPBCON (*(volatile unsigned *)0x56000010) 

13 #define GPBDAT (*(volatile unsigned *)0x56000014) 

14 #define GPBUP (*(volatile unsigned *)0x56000018)

15 

16 #define uchar unsigned char

17 #define uint unsigned int

18 #define U32 unsigned int

19 #define U16 unsigned short

20 #define S32 int

21 #define S16 short int

22 #define U8  unsigned char

23 #define    S8  char

24 

25 #define TRUE 1

26 #define FALSE 0

27 

28 #define OK 1

29 #define FAIL 0

30 

31 #define    ESC_KEY        0x1b


uart.h


 1 #include "include.h"

 2 #include

 3 

 4 

 5 

 6 void Uart_Init(int baud)

 7 {

 8     int i;

 9     rUFCON0 = 0x0;   //UART channel 0 FIFO control register, FIFO disable

10   

11  

12 //UART0

13     rULCON0 &=0XFFFFFF00;

14     rULCON0 |=0X03;           //1位起始位,8位数据位

15     rUCON0  =0X0805;          //串口时钟PCLK,查询方式

16     rUBRDIV0 =0X1A;

17     for(i=0;i<100;i++);

18 }

19 

20 

21     

22 //=====================================================================

23 void Uart_SendByte(int data)

24 {

25    

26         if(data=='n')

27         {

28             while(!(rUTRSTAT0 & 0x2));

29            // Delay(1);                 //because the slow response of hyper_terminal 

30             WrUTXH0('r');

31         }

32         while(!(rUTRSTAT0 & 0x2));   //Wait until THR is empty.

33       //  Delay(1);

34         WrUTXH0(data);

35   

36    

37 }               

38 

39 //====================================================================

40 void Uart_SendString(S8 *pt)

41 {

42     while(*pt)

43         Uart_SendByte(*pt++);

44 }

45 

46 //=====================================================================

47 //If you don't use vsprintf(), the code size is reduced very much.

48 void Uart_Printf(S8 *fmt,...)

49 {

50     va_list ap;

51     S8 str[255];

52 

53     va_start(ap,fmt);

54        vsprintf(str,fmt,ap);

55     Uart_SendString(str);

56     va_end(ap);

57 }

58 

59 //=====================================================================

60 

61 /*

62 char Uart_GetKey(void)

63 {

64     

65         if(rUTRSTAT0 & 0x1)    //Receive data ready

66         return rURXH0 ;

67         else

68             return 0;

69  

70 }

71 */

 

main.c


#include"include.h"

#include "uart.h"


void Delay(int count)

{

    unsigned int i;                

    while (--count != 0)        

    {

        for (i=0; i<255; i++);        // ";" 表示空语句,CPU空转。

    }                   

}


void WuqiMain(void)

{

    char buf;

    

    GPBUP = 0x00; 

    GPBCON &= ~(1<<13);

    GPBCON |= (1<<12);

    GPBCON &= ~(1<<21);    

    GPBCON |= (1<<20);

    

    while(1)

    {

        GPBDAT &= ~(1<<6);

        GPBDAT &= 0xffe;

        

        if(rUTRSTAT0 & 0X01)  //接收是否完毕 =1结束

        {

            buf=rURXH0;       //读取数据

            while(!(rUTRSTAT0 & 0X04));//是否允许发送 =1允许

            rUTXH0=buf;

        }            

        if(buf=='1')

        {

            GPBDAT &= ~(1<<10);

            

        }    


    }

}

 

测试一下,vc6,file——new——projects——win32consoleApplication——a simple application


 1 #include "stdafx.h"

 2 #include

 3 #include

 4 

 5 

 6 int main(int argc, char* argv[])

 7 {

 8     char lpBuf[]="1";

 9     FILE * pFile=fopen("COM1","w");

10     if(pFile==NULL)

11     {

12         return 1;

13     }

14     fwrite(lpBuf,sizeof(char),strlen(lpBuf),pFile);

15     fclose(pFile);

16     return 0;


运行后开发板两个LED亮,也可用串口调试助手发送“1”来测试。

关键字:串口控制  FL2440  S3C2440  LED 引用地址:串口控制FL2440(S3C2440)的LED

上一篇:S3C2440串口通信基本功能的代码(注释+学习)
下一篇:用看门狗定时器做计时器,计算程序耗时,超声波测距,FL244

推荐阅读最新更新时间:2024-11-12 18:16

代码重定位
1 说明 实验平台: JZ2440 CPU: S3C2440 2 S3C2440的启动过程 图1 S3C2440A Memory Map after Reset S3C2440支持从多种存储设备启动:NOR/NAND Flash, EEPROM, 等等。芯片内部有4K SRAM用于启动设备使用。至于,设备最终以哪一种方式启动,通过配置芯片的OM引脚,由芯片内部实现。 摘自《S3C2440A_UserManual_Rev13》: 图2 BANK0 BUS WIDTH 举个例子,当选择以NOR Flash的方式启动时,芯片的0地址(4K地址空间)会直接映射到Nor Flash上,
[单片机]
代码重定位
WELLMAX成为三星LED芯片中国第一家品牌授权合作伙伴
全球LED芯片领导品牌 三星电子 (SamsungElectronics)与 LED球泡 专家 昭关照明 (WELLMAX)在三星集团签署协议,确立昭关照明(WELLMAX)在通用照明领域取得三星LED芯片的品牌授权,昭关照明(WELLMAX)自此正式成为三星LED芯片中国第一家品牌授权合作伙伴。   三星电子作为世界一流的电子公司,是全球最大的LED芯片制造商之一,拥有全球第一数量的半导体专利技术。三星电子LED事业部中国区总经理唐国庆表示:“昭关照明(WELLMAX)作为中国照明行业海外市场的领先品牌在LED照明行业取得了极大的成功,其注重品牌和价值的理念非常符合三星合作伙伴的标准,我们非常高兴将三星电子中国第一家品牌授权合
[嵌入式]
Micro LED还是OLED?AR-VR头显该怎么选
  最近传言表明,苹果在过去数年间一直在研究名为Micro LED的新型显示器,而他们已经取得了相当大的进展。同时早在2016年Oculus就收购了爱尔兰的Micro LED初创公司InfiniLED。下面就随嵌入式小编一起来了解一下相关内容吧。   Micro LED在许多方面都有可能优于 OLED ,并且可能成为未来十年新产品的主流显示技术,所以市场现在对Micro LED感到十分兴奋。所以映维网开始思考,Micro LED是否将会代替 OLED 成为VR显示屏的最终选择。据2016年的报道,InfiniLED成功开发出一项能耗减少技术,可以把VR设备的能耗减少20-40倍。   1. 比 OLED 更薄   与传
[嵌入式]
用于LED照明的配备6通道PWM端口的8位MCU
LAPIS Semiconductor公司于2013年9月17日宣布,开发出了用于 LED 照明控制的8bit微控制器(MCU)“ML610Q111/ML610Q112”。据介绍,新产品配备6通道的PWM(脉冲宽度调制)端口,由此可以实现多种色调和亮度,可获得与生活场景和内饰巧妙搭配的丰富的照明效果。   新产品配备的PWM的分辨率均为16bit(可在16.384MHz下工作),PWM控制用时钟由新开发的时钟振荡电路生成,振荡频率为8.192MHz±1%(25℃时。-10~85℃时为±2%,-40~85℃时为±2.5%)。据介绍,将该振荡电路与内置的逻辑电源用稳压器组合使用后,可以削减逻辑电源用电容器等外部部件的数量,而且,通过采
[电源管理]
使用STM32固件库操作控制LED灯(CMSIS)(STM32_03)
直接使用寄存器地址来进行STM32开发要对每一个寄存器的地址通过查找芯片手册,对每一个寄存器的各个位的含义也要查清楚,然后决定对那个地址的哪些位进行怎样的设置。这种编程效率低,程序的可移植性差,程序的可读性差。 一、CMSIS 基于cortex系列的处理器内核都是一样的,区别在于除内核以外的外设的差异,由于这些差异,导致不同处理器移植起来比较麻烦,所以ARM与芯片厂商建立了CMSIS标准。ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller SoftwareInterface Standard) 。 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层,使用CMSIS
[单片机]
使用STM32固件库操作<font color='red'>控制</font><font color='red'>LED</font>灯(CMSIS)(STM32_03)
STM32CubeMX代码生成和点亮LED
所需工具STM32CubeMX和Keil5 1、先打开STM32CubeMX软件,点击New Project新建工程; 2.在搜索框中搜索你的项目芯片; 3、搜索出来有两个不同封装的芯片,写程序没区别,但是这个软件可以生成IO说明文档,可能会导致文档与实际封装差异。选择确定后双击~; 4、创建完工程,简单介绍一下功能; 5、先配置时钟树,我使用的F429最大支持180M时钟,我配置为最大时钟。 6、我的板子LED是接在PA11上的,在搜索栏上搜索PA11,芯片PA11会一闪一闪的。 7、点击PA11引脚,会出现下面画面,我们选择GPIO_Output 8、当PA11选择作为输出时
[单片机]
STM32CubeMX代码生成和点亮<font color='red'>LED</font>
功耗为4mW的低工作周期LED闪灯
电池供电设备通常都有一个电源指示灯。但这个指示灯可能消耗不小的功率。用低工作周期的闪灯,可提供对开机状态的适当提示,这种情况下可使用本文所描述的简单电路。 SN74AHC1G14 是一只微型的单施密特触发器逻辑反相器,再加上两只电阻,一只肖特基二极管和一只电容,就构成了闪灯的时序发生器,如图所示。输出波形的周期大约为 就要加快电容C 的充电时间, 以缩短高输出时间TL。实现方法是增加电阻RCH以及串联的肖特基二极管D1S。D1S的正向压降不超过200mV,可以忽略不计。LED的点亮时间大约为(1/100)×TL≈5ms。 LED驱动器包括一个PNP双极晶体管Q1和一个NPN双极晶体管Q2。Q1与Q2构
[电源管理]
功耗为4mW的低工作周期<font color='red'>LED</font>闪灯
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved