查看: 2396|回复: 0

NXP S08P-LITE-V3开发板试用 3、GPIO驱动LED

[复制链接]
  • TA的每日心情
    开心
    2024-10-25 14:50
  • 签到天数: 1071 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2018-11-14 14:19:37 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 TLLED 于 2018-11-14 14:19 编辑

           GPIO驱动LED灯程序
        一、硬件电路

            8路LED指示灯
           1.png


        二、程序部分
            
            2.1、LED初始化
    1. <font size="3">void Init_LED(void)
    2. {
    3.         PORT_PTEOE_PTEOE7 = 1;                //LED0 D9 PTE7
    4.         PORT_PTGOE_PTGOE0 = 1;      //LED1 D10 PTG0
    5.         PORT_PTGOE_PTGOE1 = 1;      //LED2 D11 PTG1
    6.         PORT_PTGOE_PTGOE2 = 1;      //LED3 D12 PTG2
    7.         PORT_PTGOE_PTGOE3 = 1;      //LED4 D13 PTG3
    8.         PORT_PTHOE_PTHOE2 = 1;      //LED5 D14 PTH2
    9.         PORT_PTHOE_PTHOE6 = 1;      //LED6 D15 PTH6
    10.         PORT_PTHOE_PTHOE7 = 1;      //LED7 D16 PTH7
    11. }</font>
    复制代码
            程序分析:       PTEOE---PORT E端口输出使能寄存器
           PORT_PTEOE_PTEOE7 -- PORTE 第7位
           对应的位置1,输出使能。置0,输出禁止。其他几个端口和这个一样。设置对应的端口位。
             201.png


            2.2、LED驱动部分
            
    1. <font size="3">void LED_Tst(uint8_t val)
    2. {
    3.         if(val & 0x01)
    4.         {
    5.                 PORT_PTED_PTED7=1;
    6.         }
    7.         else
    8.         {
    9.                 PORT_PTED_PTED7=0;
    10.         }
    11.         //----------------------------------------
    12.         if(val & 0x02)
    13.         {
    14.                 PORT_PTGD_PTGD0=1;        
    15.         }
    16.         else
    17.         {
    18.                 PORT_PTGD_PTGD0=0;        
    19.         }
    20.         //----------------------------------------
    21.         if(val & 0x04)
    22.         {
    23.                 PORT_PTGD_PTGD1=1;
    24.         }
    25.         else
    26.         {
    27.                 PORT_PTGD_PTGD1=0;
    28.         }
    29.         //----------------------------------------
    30.         if(val & 0x08)
    31.         {
    32.                 PORT_PTGD_PTGD2=1;
    33.         }
    34.         else
    35.         {
    36.                 PORT_PTGD_PTGD2=0;
    37.         }
    38.         //----------------------------------------
    39.         if(val & 0x10)
    40.         {
    41.                 PORT_PTGD_PTGD3=1;
    42.         }
    43.         else
    44.         {
    45.                 PORT_PTGD_PTGD3=0;
    46.         }
    47.         //----------------------------------------
    48.         if(val & 0x20)
    49.         {
    50.                 PORT_PTHD_PTHD2=1;
    51.         }
    52.         else
    53.         {
    54.                 PORT_PTHD_PTHD2=0;
    55.         }
    56.         //----------------------------------------
    57.         if(val & 0x40)
    58.         {
    59.                 PORT_PTHD_PTHD6=1;
    60.         }
    61.         else
    62.         {
    63.                 PORT_PTHD_PTHD6=0;
    64.         }
    65.         //----------------------------------------
    66.         if(val & 0x80)
    67.         {
    68.                 PORT_PTHD_PTHD7=1;
    69.         }
    70.         else
    71.         {
    72.                 PORT_PTHD_PTHD7=0;
    73.         }
    74. }</font>
    复制代码


            程序分析
            设置PORT_PTxD  数据寄存器,设置为输出后,对应的寄存器位置1,输出端口为1,对应的端口位置0,输出端口为0。
             202.png
            2.3、main.c
            
    1. <font size="3">void main(void)
    2. {
    3.     uint8_t i = 0;
    4.     uint8_t j=0;
    5.     uint32_t cnt=0;
    6.    
    7.     uint8_t u8IRDATxCnt = 0;
    8.    
    9.     volatile uint8_t w25q32_id = 0;
    10.     volatile unsigned char dummy;
    11.     unsigned short uiCount;
    12.    
    13.     //Initialize system including clocks
    14.     //Watchdog: disabled
    15.     //FEE: BUS clock 16MHz
    16.     //Serial terminal: SCI2 baudrate 9600
    17.     Sys_Init();
    18.     EnableInterrupts;

    19.     printf("\n-- S08-LITE FAT BEGINS --\n");
    20.     printf("\n");
    21.    
    22.     //j=0x01;
    23.    
    24. <b>    Init_LED();
    25.         for(i=0;i<20;i++)
    26.         {
    27.                 LED_Tst(0x00);
    28.                 for(cnt=0;cnt<5000;cnt++);
    29.                 LED_Tst(0xFF);
    30.                 for(cnt=0;cnt<5000;cnt++);        
    31.         }</b>
    32.    
    33.    
    34.     //Initialize MTIM1, 1ms interrupt inveral, used for 1ms time delay
    35.     MTIM1_Init();</font>
    复制代码


        三、执行结果

            板子上8个LED等亮、灭闪烁。
        301.jpg

















    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 22:40 , Processed in 0.114766 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.