在线时间954 小时
UID336767
注册时间2011-12-29
NXP金币499
TA的每日心情 | 开心 2018-7-23 21:04 |
---|
签到天数: 103 天 [LV.6]常住居民II
金牌会员
- 积分
- 15231
- 最后登录
- 1970-1-1
|
官网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灯
对应MAPS-K22主板
可以看到,四个LED使用了PTB9、PTB3、PTB2、PTB1四个引脚。
2、KDS新建工程
选择工程模板
选择开发板型号
自动新建的工程目录
3、修改工程
修改调试串口号
添加修改MAPS-DOCK上的四个LED宏定义内容
修改MAPS-K22开发板引脚初始化函数
添加主函数
4、运行效果
演示效果就不上了,这是串口输出的信息。
6、下面给出修改的代码:
board.h中关于LED的部分
- /* MAPS-K22 Board led mapping */
- #define BOARD_LED1_GPIO GPIOB
- #define BOARD_LED1_GPIO_PORT PORTB
- #define BOARD_LED1_GPIO_PIN 9U
- #define BOARD_LED2_GPIO GPIOB
- #define BOARD_LED2_GPIO_PORT PORTB
- #define BOARD_LED2_GPIO_PIN 3U
- #define BOARD_LED3_GPIO GPIOB
- #define BOARD_LED3_GPIO_PORT PORTB
- #define BOARD_LED3_GPIO_PIN 2U
- #define BOARD_LED4_GPIO GPIOB
- #define BOARD_LED4_GPIO_PORT PORTB
- #define BOARD_LED4_GPIO_PIN 1U
- #define LED1_INIT(output) \
- GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PIN, \
- &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
- #define LED1_ON() \
- GPIO_ClearPinsOutput(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN)
- #define LED1_OFF() \
- GPIO_SetPinsOutput(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN)
- #define LED1_TOGGLE() \
- GPIO_TogglePinsOutput(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN)
- #define LED2_INIT(output) \
- GPIO_PinInit(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PIN, \
- &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
- #define LED2_ON() \
- GPIO_ClearPinsOutput(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN)
- #define LED2_OFF() \
- GPIO_SetPinsOutput(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN)
- #define LED2_TOGGLE() \
- GPIO_TogglePinsOutput(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN)
- #define LED3_INIT(output) \
- GPIO_PinInit(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PIN, \
- &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
- #define LED3_ON() \
- GPIO_ClearPinsOutput(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN)
- #define LED3_OFF() \
- GPIO_SetPinsOutput(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN)
- #define LED3_TOGGLE() \
- GPIO_TogglePinsOutput(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN)
- #define LED4_INIT(output) \
- GPIO_PinInit(BOARD_LED4_GPIO, BOARD_LED4_GPIO_PIN, \
- &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
- #define LED4_ON() \
- GPIO_ClearPinsOutput(BOARD_LED4_GPIO, 1U << BOARD_LED4_GPIO_PIN)
- #define LED4_OFF() \
- GPIO_SetPinsOutput(BOARD_LED4_GPIO, 1U << BOARD_LED4_GPIO_PIN)
- #define LED4_TOGGLE() \
- GPIO_TogglePinsOutput(BOARD_LED4_GPIO, 1U << BOARD_LED4_GPIO_PIN)
复制代码 board.h中关于调试串口部分:
- /*! @brief The UART to use for debug messages. */
- #define BOARD_USE_UART
- #define BOARD_DEBUG_UART_TYPE DEBUG_CONSOLE_DEVICE_TYPE_UART
- #define BOARD_DEBUG_UART_BASEADDR (uint32_t) UART0
- #define BOARD_DEBUG_UART_CLKSRC kCLOCK_CoreSysClk
- #define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetCoreSysClkFreq()
- #define BOARD_UART_IRQ UART0_RX_TX_IRQn
- #define BOARD_UART_IRQ_HANDLER UART0_RX_TX_IRQHandler
- #ifndef BOARD_DEBUG_UART_BAUDRATE
- #define BOARD_DEBUG_UART_BAUDRATE 115200
- #endif /* BOARD_DEBUG_UART_BAUDRATE */
复制代码 pin_mux.c中初始化部分
- /* Function Name : BOARD_InitPins */
- void BOARD_InitPins(void)
- {
- /* Initialize UART0 pins below */
- /* Ungate the port clock */
- CLOCK_EnableClock(kCLOCK_PortA);
- /* Affects PORTA_PCR1 register */
- PORT_SetPinMux(PORTA, 1u, kPORT_MuxAlt2);
- /* Affects PORTA_PCR2 register */
- PORT_SetPinMux(PORTA, 2u, kPORT_MuxAlt2);
- CLOCK_EnableClock(kCLOCK_PortB);
- PORT_SetPinMux(PORTB, 9U, kPORT_MuxAsGpio);
- PORT_SetPinMux(PORTB, 3U, kPORT_MuxAsGpio);
- PORT_SetPinMux(PORTB, 2U, kPORT_MuxAsGpio);
- PORT_SetPinMux(PORTB, 1U, kPORT_MuxAsGpio);
- }
复制代码 主函数部分
- #include "board.h"
- #include "pin_mux.h"
- #include "clock_config.h"
- #include "fsl_debug_console.h"
- void delay(void) {
- volatile uint32_t i = 0;
- for (i = 0; i < 800000; ++i)
- {
- __asm("NOP"); /* delay */
- }
- }
- /*!
- * @brief Application entry point.
- */
- int main(void) {
- /* Init board hardware. */
- BOARD_InitPins();
- BOARD_BootClockRUN();
- BOARD_InitDebugConsole();
- /* Add your code here */
- PRINTF("Hello world!\r\n");
- LED1_INIT(0);
- LED2_INIT(0);
- LED3_INIT(0);
- LED4_INIT(0);
- for(;;) { /* Infinite loop to avoid leaving the main function */
- LED1_TOGGLE();
- LED2_TOGGLE();
- LED3_TOGGLE();
- LED4_TOGGLE();
- delay();
- }
- }
复制代码
最近比较忙,就简单给出这种方法,欢迎大家交流。
|
|