查看: 1122|回复: 0

【S08P闯关赛经验分享】(二)S08P-Lite GPIO 普通IO输出

[复制链接]
  • TA的每日心情
    擦汗
    2023-12-24 19:50
  • 签到天数: 56 天

    [LV.5]常住居民I

    7

    主题

    95

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    374
    最后登录
    2023-12-24
    发表于 2020-6-22 00:41:19 | 显示全部楼层 |阅读模式
    本帖最后由 xyzml 于 2020-6-22 00:43 编辑

    今天略微了解了一下GPIO
    S08P-Lite 上,MCU为64引脚的S8PT60A
    GPIO ABCDEFGH共8组 54个
    ABCDEF均为0-7
    G 为G0-G3
    H 为H0-H2、H6、H7
    S08P-Lite 上IO资源大致配置如下:
    LED: E7 G0 G1 G2 G3 H2 H6 H7
    KEY: E1->F3  E2->B0 SW2->D4  SW3->D5
    蜂鸣器:C4
    电位器:F4
    温度采集:F5 F6
    DAC:  SCL->A2  SDA->A3   输出经J15可跳至A1
    以上只是大致扫了下,今天先点灯
    本人第一次使用CodeWarrior,打开后界面还是比较熟悉,和以前接触过的Code Composer Studio风格比较类似~
    图中左边为Code Composer Studio右边为CodeWarrior,安能辨我是雌雄:
    批注 2020-06-21 234817.png

    今天的目的是点灯,回到程序
    在CodeWarrior生成的mc9s08pt60.h中,已定义好各种寄存器
    搜索I/O map即可定位到IO的定义处
    首先对IO进行输入输出配置,比如
    PTA0配置为输入:PORT_PTAIE_PTAIE0=1
    PTA0配置为输出:PORT_PTAIE_PTAOE0=1

    根据LED的IO位置进行初始化(S08P-Lite 官方例程也有相关定义,可以直接食用)
    1. void GPIO_Init(void)
    2. {
    3.         PORT_PTEOE_PTEOE7 =1;/* 使能E7输出 */
    4.         PORT_PTGOE_PTGOE0 =1;/* 使能G0口输出 */
    5.         PORT_PTGOE_PTGOE1 =1;/* 使能G1口输出 */
    6.         PORT_PTGOE_PTGOE2 =1;/* 使能G2口输出 */
    7.         PORT_PTGOE_PTGOE3 =1;/* 使能G3口输出 */
    8.         PORT_PTHOE_PTHOE2 =1;/* 使能H2口输出 */
    9.         PORT_PTHOE_PTHOE6 =1;/* 使能H6口输出 */
    10.         PORT_PTHOE_PTHOE7 =1;/* 使能H7口输出 */

    11.         //例PTA0配置为输入:PORT_PTAIE_PTAIE0=1
    12.         //例PTA0配置为输出:PORT_PTAIE_PTAOE0=1
    13. }
    复制代码
    根据LED所连IO进行定义
    1. #define LED1 PORT_PTED_PTED7
    2. #define LED2 PORT_PTGD_PTGD0
    3. #define LED3 PORT_PTGD_PTGD1
    4. #define LED4 PORT_PTGD_PTGD2
    5. #define LED5 PORT_PTGD_PTGD3
    6. #define LED6 PORT_PTHD_PTHD2
    7. #define LED7 PORT_PTHD_PTHD6
    8. #define LED8 PORT_PTHD_PTHD7
    复制代码
    接下来就可以随心所欲操纵LED了
    1. void main(void) {
    2.   EnableInterrupts;
    3.   /* include your code here */
    4.   GPIO_Init();
    5.   for(;;) {
    6.     //__RESET_WATCHDOG();        /* feeds the dog */
    7.     LED1 =!LED1;
    8.     delay_ms(10);
    9.     LED2 =!LED2;
    10.     delay_ms(10);
    11.     LED3 =!LED3;
    12.     delay_ms(10);
    13.     LED4 =!LED4;
    14.     delay_ms(10);
    15.     LED5 =!LED5;
    16.     delay_ms(10);
    17.     LED6 =!LED6;
    18.     delay_ms(10);
    19.     LED7 =!LED7;
    20.     delay_ms(10);
    21.     LED8 =!LED8;
    22.     delay_ms(10);
    23.   } /* 永久循环 */
    24.   /* please make sure that you never leave main */
    25. }
    复制代码
    以下是运行效果,这LED很是炫酷
    111111.gif


    欢迎大家对存在的不足进行批评指正
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 19:57 , Processed in 0.115212 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表