查看: 658|回复: 1

【MCXC444分享】MCXC444基本外设访问和使用

[复制链接]
  • TA的每日心情
    擦汗
    2024-11-7 09:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    35

    主题

    82

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1243
    最后登录
    2025-7-11
    发表于 2024-11-4 16:18:57 | 显示全部楼层 |阅读模式
    1. 基本外设访问和使用
       相对多数项目都需要访问串口UART和GPIO,便于访问和调试。这里就分别介绍UART和GPIO的访问和使用。
    2. UART的访问使用
    具体访问代码如下,
    1. #include "fsl_device_registers.h"
    2. #include "fsl_debug_console.h"
    3. #include "pin_mux.h"
    4. #include "board.h"

    5. #include "fsl_common.h"

    6. int main(void)
    7. {
    8.     char ch;

    9.     /* Init board hardware. */
    10.     BOARD_InitPins();
    11.     BOARD_InitBootClocks();
    12.     BOARD_InitDebugConsole();

    13.     PRINTF("hello world.\r\n");

    14.     while (1)
    15.     {
    16.         ch = GETCHAR();
    17.         PUTCHAR(ch);
    18.     }
    19. }
    复制代码
    上述代码首先需要包括以下头文件
    #include "fsl_debug_console.h"
    其中引用了
    #include "fsl_component_serial_manager.h"
    这个指向UART的引用和有关函数的定义

    这个主要是启动了对于UART的串口设置,随后就可以使用GETCHAR和PUTCHAR函数进行访问和使用。
    正确编译并下载后,启动putty,如下设置
    Capture.PNG
    首先输出hello world,然后对于输入的字符进行回传,
    每次都会到行首进行输出
    Capture.PNG

    3. GPIO的访问使用
    有关的范例代码如下
    1. #include "pin_mux.h"
    2. #include "clock_config.h"
    3. #include "board.h"
    4. #include "fsl_debug_console.h"
    5. #include "fsl_gpio.h"

    6. #define BOARD_LED_GPIO     BOARD_LED_RED_GPIO
    7. #define BOARD_LED_GPIO_PIN BOARD_LED_RED_GPIO_PIN

    8. void delay(void);

    9. void delay(void)
    10. {
    11.     volatile uint32_t i = 0;
    12.     for (i = 0; i < 800000; ++i)
    13.     {
    14.         __asm("NOP"); /* delay */
    15.     }
    16. }

    17. /*!
    18. * @brief Main function
    19. */
    20. int main(void)
    21. {
    22.     gpio_pin_config_t led_config = {
    23.         kGPIO_DigitalOutput,
    24.         0,
    25.     };

    26.     BOARD_InitPins();
    27.     BOARD_BootClockRUN();
    28.     BOARD_InitDebugConsole();
    29.     PRINTF("\r\n GPIO Driver example\r\n");
    30.     PRINTF("\r\n The LED is blinking.\r\n");
    31.     GPIO_PinInit(BOARD_LED_GPIO, BOARD_LED_GPIO_PIN, &led_config);

    32.     while (1)
    33.     {
    34.         delay();
    35.         GPIO_PortToggle(BOARD_LED_GPIO, 1u << BOARD_LED_GPIO_PIN);
    36.     }
    37. }
    复制代码
    上述代码也是需要首先引用GPIO的头文件、
    #include "fsl_gpio.h"
    然后选择控制引脚定义和有关的配置函数,
    gpio_pin_config_t led_config = {kGPIO_DigitalOutput,0,};
    这样就可以直接使用对该引脚的0-1赋值来确定GPIO的通断模式,这里驱动一个低功耗的LED,可以直观显示效果。
    代码编译成功
    Capture.PNG
    直接下载就可以展示效果。这里设定是每秒通断一次,使用对时钟的自动计数来实现。
    定时采用的0.8M个nope操作,对应主频48MHz,这里就是需要60和时钟完成这个循环操作。
    4. 小结
    对于这个芯片的使用可以快速上手,主要的步骤是首先引用对应的外设头文件,然后进行初始配置,最后就可以直接引用函数来进行操作了。
    其他外设,如I2C SPI等都是类似从操作循环,可以方便实现快速的访问。



    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-8 09:54
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    18

    帖子

    0

    注册会员

    Rank: 2

    积分
    86
    最后登录
    2025-3-13
    发表于 2024-11-6 17:57:11 | 显示全部楼层
    可以可以,写的不错
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-29 09:50 , Processed in 0.084961 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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