查看: 1223|回复: 0

[原创] 【MCX-N947分享】+建立开发环境,点亮LED

[复制链接]
  • TA的每日心情
    开心
    昨天 11:56
  • 签到天数: 1165 天

    连续签到: 59 天

    [LV.10]以坛为家III

    28

    主题

    4398

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    6047
    最后登录
    2025-9-30
    发表于 2024-7-6 11:21:43 | 显示全部楼层 |阅读模式
    本帖最后由 suncat0504 于 2024-7-6 11:23 编辑



    按照习惯,使用Keil建立FRDM-MCXN947的开发环境。从恩智浦的官网下载SDK包,启动Led-Blink工程,修改工程代码。

    开发板上有一个D2,是红、绿、蓝三色发光管。分别使用P0_10P0_27P1_2三个GPIO口。在Led-Blink例程中,只是初始化了红色LED的口,我这里为了测试红绿LED交替显示,加入了绿色LED的初始化代码。初始化函数BOARD_InitPinspin_mux.c中。由于和红色LED使用相同的Port,所以在初始化中增加的代码比较少,只有下面一句,

        // Green LED 口初始化
        PORT_SetPinConfig(PORT0, 27U, &port0_10_pinB12_config);   

    然后在主程序中的SysTick_Handler函数中增加:

    LED_GREEN_TOGGLE();
    main函数中在LED_RED_INIT(LOGIC_LED_OFF);之后增加
    LED_GREEN_INIT(LOGIC_LED_ON);

    使用LOGIC_LED_ON,是为了保证初始化时LED是亮的,和红色的相反,这样在SysTick_Handler中执行TOGGLE处理时,保证红色LED和绿色LED交替显示。否则,同时显示后,就变成了红、绿的混色。

    相关的电路如下:
    LED部分:
    图片1.png
    主程序如下:
    1. <font size="4">#include "pin_mux.h"

    2. #include "peripherals.h"

    3. #include "board.h"



    4. /*******************************************************************************

    5. * Definitions

    6. ******************************************************************************/

    7. #define BOARD_LED_GPIO     BOARD_LED_RED_GPIO

    8. #define BOARD_LED_GPIO_PIN BOARD_LED_RED_GPIO_PIN





    9. /*******************************************************************************

    10. * Prototypes

    11. ******************************************************************************/



    12. /*******************************************************************************

    13. * Variables

    14. ******************************************************************************/

    15. uint32_t cnt = 0;



    16. /*******************************************************************************

    17. * Code

    18. ******************************************************************************/

    19. void SysTick_Handler(void)

    20. {

    21.     /* Toggle pin connected to LED */

    22.     GPIO_PortToggle(BOARD_LED_GPIO, 1u << BOARD_LED_GPIO_PIN);

    23.     LED_GREEN_TOGGLE();

    24.     cnt++;

    25. }



    26. /*!

    27. * @brief Main function

    28. */

    29. int main(void) {

    30.     /* Board pin init */

    31.     CLOCK_EnableClock(kCLOCK_Gpio0);

    32.     BOARD_InitPins();

    33.     BOARD_BootClockFRO12M();

    34.    

    35.     /* Initialize the systick module. */

    36.     SysTick_Config(12000000UL);

    37.     LED_RED_INIT(LOGIC_LED_OFF);

    38.     LED_GREEN_INIT(LOGIC_LED_ON);

    39.    

    40.     while (1) {

    41.         if ((cnt%1000)==0) {

    42.             

    43.         }

    44.         

    45.     }

    46. }</font>
    复制代码

    程序编译后,下载执行,效果如下:
    2.gif

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-10-1 11:17 , Processed in 0.071784 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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