查看: 6719|回复: 1

[分享] LPC54110学习+Systick中断

[复制链接]
  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16849
    最后登录
    1970-1-1
    发表于 2017-4-8 11:46:51 | 显示全部楼层 |阅读模式

    systick是任何cortex内核都具有的东西,严格说这个不属于SDK库的东西。
    来个systick控制1秒LED0状态变化一次。

    电路:找到LED0连接的引脚和Arduino接口
    QQ截图20170408113731.png

    QQ截图20170408113747.png

    QQ截图20170408113929.png

    QQ截图20170408113850.png
    在LPC54114微控制器内部的CM4内核的SYSTICK的内部结构如下。
    QQ截图20170407214053.png
    配置工具创建MDK工程
    QQ截图20170407213248.png
    配置引脚。
    QQ截图20170407213259.png
    配置时钟48M
    QQ截图20170407213314.png
    内核文件中有关于SYSTICK的配置函数
    QQ截图20170408113622.png
    在主函数初始化SYSTICK,配置为10ms中断。
    QQ截图20170407213353.png
    SYSTICK中断服务函数
    QQ截图20170407213410.png
    完整程序:
    1. /**
    2. * This is template for main module created by MCUXpresso Project Generator. Enjoy!
    3. **/

    4. #include "board.h"
    5. #include "pin_mux.h"
    6. #include "clock_config.h"

    7. #include "fsl_gpio.h"

    8. void SysTick_Handler(void) {
    9.   static uint32_t count = 0;
    10.   count++;
    11.   if (count >= 100) {
    12.     count = 0;
    13.     GPIO_TogglePinsOutput(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, 1U << BOARD_INITPINS_LED0_GPIO_PIN);
    14.   }
    15. }

    16. /*!
    17. * @brief Application entry point.
    18. */
    19. int main(void) {
    20.   /* Init board hardware. */
    21.   BOARD_InitBootPins();
    22.   BOARD_InitBootClocks();
    23.   BOARD_InitDebugConsole();
    24. #ifdef SDK_PRIMARY_CORE
    25.   BOARD_StartSecondaryCore();
    26. #endif

    27.   /* Add your code here */
    28.   CLOCK_EnableClock(kCLOCK_Gpio0);
    29.   
    30.   gpio_pin_config_t led0Config = {
    31.     kGPIO_DigitalOutput,
    32.     0,
    33.   };
    34.   
    35.   GPIO_PinInit(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, BOARD_INITPINS_LED0_GPIO_PIN, &led0Config);
    36.   
    37.   SysTick_Config(MSEC_TO_COUNT(10, CLOCK_GetFreq(kCLOCK_CoreSysClk)));

    38.   for(;;) { /* Infinite loop to avoid leaving the main function */
    39.     __asm("NOP"); /* something to use as a breakpoint stop while looping */
    40.   }
    41. }
    复制代码
    编译程序并下载,发现LED0开始闪烁。
    QQ截图20170408113651.png
    使用逻辑分析仪看一下波形,可以看到的确实现了要求。
    QQ截图20170407213120.png

    完整工程:
    LED0_Toggle_SysTick_MCUXpressoIDE_Project_cm4.rar (4.73 MB, 下载次数: 25)
    回复

    使用道具 举报

    该用户从未签到

    26

    主题

    97

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    386
    最后登录
    2023-9-12
    发表于 2023-3-7 15:06:15 | 显示全部楼层
    正好需要,感谢感谢
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-30 06:48 , Processed in 0.067545 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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