查看: 3319|回复: 3

[原创] 【KE02Z】学习之点亮RGB灯

[复制链接]
  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7513
    最后登录
    2021-8-30
    发表于 2016-8-26 19:30:13 | 显示全部楼层 |阅读模式
    电路比较简单,原理图就不贴了,直接看程序就能明白使用的是文件自带的软件生成的工程文件:

    2.png
    只要输入要创建工程的名字即可:

    1.png

    生成的工程文件:

    3.png

    看看LED灯的定义:

    4.png

    在创建工程的同时也创建了一个RTC的1S中断、一个串口程序和一个闪灯的任务,当然为了不至于单调,我加了另外二个颜色的灯来生成二种颜色的切换闪烁,下面是源程序:
    int main (void)
    {
        uint8_t         u8Ch;
        ICS_ConfigType  sICSConfig;
        RTC_ConfigType  sRTCConfig;
        RTC_ConfigType  *pRTCConfig = &sRTCConfig;      
        UART_ConfigType sConfig;

        /* Perform processor initialization */
        sysinit();

        printf("\nRunning the LED project.\n");
        LED0_Init(); /*! RED Light */
        LED1_Init(); /*! Green */
        LED2_Init(); /*! Blue */
           
    //          LED0_Off();
    //          LED1_Off();
              LED2_Off();

        /* configure RTC to 1Hz interrupt frequency */
        pRTCConfig->u16ModuloValue = 9;                                      
        pRTCConfig->bInterruptEn   = RTC_INTERRUPT_ENABLE;     /* enable interrupt */
        pRTCConfig->bClockSource   = RTC_CLKSRC_1KHZ;          /*clock source is 1khz*/
        pRTCConfig->bClockPresaler = RTC_CLK_PRESCALER_100;    /*prescaler is 100*/

        RTC_SetCallback(RTC_Task);
        RTC_Init(pRTCConfig);

        printf("\nIt is in FEE mode now,");
        UART_WaitTxComplete(TERM_PORT);   

        /* switch clock mode from FEE to FEI */
        sICSConfig.u32ClkFreq = 32;     /* NOTE: use value 32 for 31.25KHz to 39.0625KHz of internal IRC */
        ICS_SwitchMode(FEE,FEI, &sICSConfig);

        /* reinitialize the UART for terminal due to bus clock changed to 20MHz*/
        sConfig.u32SysClkHz = 20000000L;
        sConfig.u32Baudrate  = UART_PRINT_BITRATE;

        UART_Init (TERM_PORT, &sConfig);   

        printf("switch to FEI mode.\n");

        OSC_Enable();

        printf("Please enter any character which will echo...\n");

        /* echo chars received from terminal */
        while(1)
        {
            u8Ch = UART_GetChar(TERM_PORT);
            UART_PutChar(TERM_PORT, u8Ch);
        }
    }

    void RTC_Task(void)
    {
        /* toggle LED1 */
        LED1_Toggle();
              LED0_Toggle();
              LED2_Toggle();
    }


    看看实验结果:


    WP_20160826_18_57_26_Pro.jpg WP_20160826_18_57_31_Pro.jpg

    执行闪灯任务采用了回调函数的方法:

    typedef void (*RTC_CallbackType)(void);//声明函数指针

    RTC_CallbackType RTC_Callback[1] = {(RTC_CallbackType)NULL}; //创建一个RTC_CallbackType类型数组


    void RTC_SetCallback(RTC_CallbackType pfnCallback)//将任务加入数组功能函数
    {
      RTC_Callback[0] = pfnCallback;
    }


    RTC_SetCallback(RTC_Task);//将任务加入数组

    void RTC_Isr(void) //在中断执行
    {
        RTC_ClrFlags();               
        if (RTC_Callback[0])
        {   
            RTC_Callback[0]();     
        }
    }


    不知道这样理解会不会有误,C底子不好有不对的请指出,谢谢!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16734
    最后登录
    1970-1-1
    发表于 2016-8-26 22:47:34 | 显示全部楼层
    不错不错,支持一个
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    555

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    1343
    最后登录
    2018-10-23
    发表于 2016-8-27 09:07:05 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7513
    最后登录
    2021-8-30
     楼主| 发表于 2016-8-29 15:59:29 | 显示全部楼层
    谢谢支持
    nxp.png

    nxpp.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-2 15:10 , Processed in 0.090784 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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