查看: 2144|回复: 0

[原创] 【MAPS - K22套件试用】KSDK2.0+KDS3.0实现移植

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

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15231
    最后登录
    1970-1-1
    发表于 2016-5-16 23:05:35 | 显示全部楼层 |阅读模式
    官网MAPS-KS22已经有官网的KSDK2.0库实现程序了,但是MAPS-K22却迟迟没有上线,板子自带的例程是基于KSDK1.0的,而且使用的是IAR和MDK来实现的!
    这给大家使用MAPS-K22上使用KSDK2.0库带来许多不便,结合之前小恩GG的帖子,自己也实现了下,给大家分享一下。

    首先说一下资源:使用KDS3.0+KSDK2.0,使用SDK_2.0_TWR-K22F120M修改而来的。

    实现功能很简单,控制MAPS-DOCK上的四个LED闪烁。

    1、先来看一下电路:
    MAPS-DOCK上的LED灯
    2023.png
    2024.png
    对应MAPS-K22主板
    2020.png
    2021.png
    2022.png
    可以看到,四个LED使用了PTB9、PTB3、PTB2、PTB1四个引脚。

    2、KDS新建工程
    2010.png
    选择工程模板
    2011.png
    选择开发板型号
    2012.png
    自动新建的工程目录
    2013.png

    3、修改工程
    修改调试串口号
    2000.png
    添加修改MAPS-DOCK上的四个LED宏定义内容
    2001.png
    修改MAPS-K22开发板引脚初始化函数
    2002.png
    添加主函数
    2003.png

    4、运行效果
    演示效果就不上了,这是串口输出的信息。
    2005.png

    6、下面给出修改的代码:
    board.h中关于LED的部分
    1. /* MAPS-K22 Board led mapping */
    2. #define BOARD_LED1_GPIO GPIOB
    3. #define BOARD_LED1_GPIO_PORT PORTB
    4. #define BOARD_LED1_GPIO_PIN 9U
    5. #define BOARD_LED2_GPIO GPIOB
    6. #define BOARD_LED2_GPIO_PORT PORTB
    7. #define BOARD_LED2_GPIO_PIN 3U
    8. #define BOARD_LED3_GPIO GPIOB
    9. #define BOARD_LED3_GPIO_PORT PORTB
    10. #define BOARD_LED3_GPIO_PIN 2U
    11. #define BOARD_LED4_GPIO GPIOB
    12. #define BOARD_LED4_GPIO_PORT PORTB
    13. #define BOARD_LED4_GPIO_PIN 1U

    14. #define LED1_INIT(output) \
    15.     GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PIN, \
    16.                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
    17. #define LED1_ON() \
    18.     GPIO_ClearPinsOutput(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN)
    19. #define LED1_OFF() \
    20.     GPIO_SetPinsOutput(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN)
    21. #define LED1_TOGGLE() \
    22.     GPIO_TogglePinsOutput(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN)

    23. #define LED2_INIT(output) \
    24.     GPIO_PinInit(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PIN, \
    25.                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
    26. #define LED2_ON() \
    27.     GPIO_ClearPinsOutput(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN)
    28. #define LED2_OFF() \
    29.     GPIO_SetPinsOutput(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN)
    30. #define LED2_TOGGLE() \
    31.     GPIO_TogglePinsOutput(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN)


    32. #define LED3_INIT(output) \
    33.     GPIO_PinInit(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PIN, \
    34.                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
    35. #define LED3_ON() \
    36.     GPIO_ClearPinsOutput(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN)
    37. #define LED3_OFF() \
    38.     GPIO_SetPinsOutput(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN)
    39. #define LED3_TOGGLE() \
    40.     GPIO_TogglePinsOutput(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN)

    41. #define LED4_INIT(output) \
    42.     GPIO_PinInit(BOARD_LED4_GPIO, BOARD_LED4_GPIO_PIN, \
    43.                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
    44. #define LED4_ON() \
    45.     GPIO_ClearPinsOutput(BOARD_LED4_GPIO, 1U << BOARD_LED4_GPIO_PIN)
    46. #define LED4_OFF() \
    47.     GPIO_SetPinsOutput(BOARD_LED4_GPIO, 1U << BOARD_LED4_GPIO_PIN)
    48. #define LED4_TOGGLE() \
    49.     GPIO_TogglePinsOutput(BOARD_LED4_GPIO, 1U << BOARD_LED4_GPIO_PIN)
    复制代码
    board.h中关于调试串口部分:
    1. /*! @brief The UART to use for debug messages. */
    2. #define BOARD_USE_UART
    3. #define BOARD_DEBUG_UART_TYPE DEBUG_CONSOLE_DEVICE_TYPE_UART
    4. #define BOARD_DEBUG_UART_BASEADDR (uint32_t) UART0
    5. #define BOARD_DEBUG_UART_CLKSRC kCLOCK_CoreSysClk
    6. #define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetCoreSysClkFreq()
    7. #define BOARD_UART_IRQ UART0_RX_TX_IRQn
    8. #define BOARD_UART_IRQ_HANDLER UART0_RX_TX_IRQHandler

    9. #ifndef BOARD_DEBUG_UART_BAUDRATE
    10. #define BOARD_DEBUG_UART_BAUDRATE 115200
    11. #endif /* BOARD_DEBUG_UART_BAUDRATE */
    复制代码
    pin_mux.c中初始化部分
    1. /* Function Name : BOARD_InitPins */
    2. void BOARD_InitPins(void)
    3. {
    4.     /* Initialize UART0 pins below */
    5.     /* Ungate the port clock */
    6.     CLOCK_EnableClock(kCLOCK_PortA);

    7.     /* Affects PORTA_PCR1 register */
    8.     PORT_SetPinMux(PORTA, 1u, kPORT_MuxAlt2);
    9.     /* Affects PORTA_PCR2 register */
    10.     PORT_SetPinMux(PORTA, 2u, kPORT_MuxAlt2);

    11.     CLOCK_EnableClock(kCLOCK_PortB);

    12.     PORT_SetPinMux(PORTB, 9U, kPORT_MuxAsGpio);
    13.     PORT_SetPinMux(PORTB, 3U, kPORT_MuxAsGpio);
    14.     PORT_SetPinMux(PORTB, 2U, kPORT_MuxAsGpio);
    15.     PORT_SetPinMux(PORTB, 1U, kPORT_MuxAsGpio);
    16. }
    复制代码
    主函数部分
    1. #include "board.h"
    2. #include "pin_mux.h"
    3. #include "clock_config.h"
    4. #include "fsl_debug_console.h"

    5. void delay(void) {
    6.   volatile uint32_t i = 0;
    7.   for (i = 0; i < 800000; ++i)
    8.   {
    9.       __asm("NOP"); /* delay */
    10.   }
    11. }

    12. /*!
    13. * @brief Application entry point.
    14. */
    15. int main(void) {
    16.   /* Init board hardware. */
    17.   BOARD_InitPins();
    18.   BOARD_BootClockRUN();
    19.   BOARD_InitDebugConsole();

    20.   /* Add your code here */
    21.   PRINTF("Hello world!\r\n");

    22.   LED1_INIT(0);
    23.   LED2_INIT(0);
    24.   LED3_INIT(0);
    25.   LED4_INIT(0);

    26.   for(;;) { /* Infinite loop to avoid leaving the main function */
    27.     LED1_TOGGLE();
    28.     LED2_TOGGLE();
    29.     LED3_TOGGLE();
    30.     LED4_TOGGLE();
    31.     delay();
    32.   }
    33. }
    复制代码


    最近比较忙,就简单给出这种方法,欢迎大家交流。




    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-23 19:04 , Processed in 0.112540 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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