在线时间587 小时
UID3253488
注册时间2016-3-21
NXP金币0

TA的每日心情 | 怒 2017-1-4 08:05 |
---|
签到天数: 11 天 连续签到: 1 天 [LV.3]偶尔看看II
版主
  
- 积分
- 2569

- 最后登录
- 2019-3-28
|
前段时间代理商给了一块MPSA-K64开发板,无奈板子所配套的SDK1.3,你没有看错就是SDK1.3,用过都知道!哈哈,可能因人而异吧,适合胃口就好,不做过多评论。本篇文章是分享一下用SDK2.0建立工程模板到实现流水灯的一个过程。首先看下SDK2.0的文件目录:
具体每个文件夹有什么作用请看/doc里面的介绍吧,比我描述的清楚多了(无奈英语语文都不及格,看不懂啥意思。。。。),介绍完了工程目录,下面我们选择我们用到的文件,用过STM32的同学可能都记得有哪些文件,无非就是:启动文件、库文件和自己的用户文件,我讲SDK中的文件取出来,重新组织一下,如图(工程目录)。
介绍下个文件夹下面都放了哪些东西:
CMSIS->ARM公司提供的Cortex-M系列的头文件
drivers->SDK2.0中提取的外设驱动的.c和.h文件
HARDWARE->外设硬件的初始化以及驱动代码
MDK->Keil工程文件
source->影虎代码,目前为止只有一个main.c文件
startup->包含了芯片的启动文件.s和芯片的头文件
具体每个文件夹的详细文件请看附件的代码吧,实在是太多了。。。。建立Keil工程和组织想工程添加代码想必各位都已经轻车熟路了,接下来我们看一下代码怎么写的:
- #include "led.h"
- /************************************************************
- * º¯ÊýÃû³Æ:LED_Config()
- * º¯Êý¹¦ÄÜ:ÅäÖÃLEDÒý½Å
- * Èë¿Ú²ÎÊý:
- * ³ö¿Ú²ÎÊý:
- * º¯Êý˵Ã÷:
- ************************************************************/
- void LED_Config()
- {
- //gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0,};//ÉèÖÃΪÊä³öģʽ£¬Ä¬ÈÏÊä³öΪ0
- gpio_pin_config_t led_config[4] = {{kGPIO_DigitalOutput, 1,},{kGPIO_DigitalOutput, 1,},{kGPIO_DigitalOutput, 1,},{kGPIO_DigitalOutput, 1,}};
- CLOCK_EnableClock (kCLOCK_PortB);//¿ªÆôPORTBʱÖÓ
-
- PORT_SetPinMux (PORTB,4U,kPORT_MuxAsGpio);//ÉèÖÃΪGPIOģʽ
- GPIO_PinInit (GPIOB,4U,&led_config[0]);//³õʼ»¯Òý½Å
-
- PORT_SetPinMux (PORTB,5U,kPORT_MuxAsGpio);//ÉèÖÃΪGPIOģʽ
- GPIO_PinInit (GPIOB,5U,&led_config[1]);//³õʼ»¯Òý½Å
-
- PORT_SetPinMux (PORTB,6U,kPORT_MuxAsGpio);//ÉèÖÃΪGPIOģʽ
- GPIO_PinInit (GPIOB,6U,&led_config[2]);//³õʼ»¯Òý½Å
-
- PORT_SetPinMux (PORTB ,7U,kPORT_MuxAsGpio);
- GPIO_PinInit (GPIOB,7U,&led_config[3] );
-
- }
- #define __LED_H
- /*°üº¬Í·Îļþ*/
- #include "fsl_common.h"
- #include "fsl_port.h"
- #include "clock_config.h"
- #include "fsl_gpio.h"
- /*ºê¶¨Òå*/
- #define LED1_ON GPIO_WritePinOutput (GPIOB,7U,1)
- #define LED1_OF GPIO_WritePinOutput (GPIOB,7U,0)
- #define LED2_ON GPIO_WritePinOutput (GPIOB,6U,1)
- #define LED2_OF GPIO_WritePinOutput (GPIOB,6U,0)
- #define LED3_ON GPIO_WritePinOutput (GPIOB,5U,1)
- #define LED3_OF GPIO_WritePinOutput (GPIOB,5U,0)
- #define LED4_ON GPIO_WritePinOutput (GPIOB,4U,1)
- #define LED4_OF GPIO_WritePinOutput (GPIOB,4U,0)
- /************************************************************
- * º¯ÊýÃû³Æ:LED_Config()
- * º¯Êý¹¦ÄÜ:ÅäÖÃLEDÒý½Å
- * Èë¿Ú²ÎÊý:
- * ³ö¿Ú²ÎÊý:
- * º¯Êý˵Ã÷:
- ************************************************************/
- void LED_Config();
- #endif
- #include "clock_config.h"
- #include "led.h"
- /*********************************************
- * »ùÓÚSDKµÄLED²âÊÔ¹¤³Ì£¬ÖØÐÂÊáÀíÈí¼þ¼Ü¹¹
- *
- *********************************************/
- /************************************************************
- * º¯ÊýÃû³Æ:delay()
- * º¯Êý¹¦ÄÜ:¼òÒ×Èí¼þÑÓʱº¯Êý
- * Èë¿Ú²ÎÊý:
- * ³ö¿Ú²ÎÊý:
- * º¯Êý˵Ã÷:
- ************************************************************/
- void delay(void)
- {
- volatile uint32_t i = 0;
- for (i = 0; i < 8000000; ++i)
- {
- __asm("NOP"); /* delay */
- }
- }
- int main(void)//Ö÷º¯Êý
- {
- BOARD_BootClockRUN();//ʱÖÓ³õʼ»¯ÎªÔËÐÐģʽ
- LED_Config ();
- while(1)
- {
- LED1_ON ;
- delay ();
- LED1_OF ;
- delay ();
- LED2_ON ;
- delay ();
- LED2_OF ;
- delay ();
- LED3_ON ;
- delay ();
- LED3_OF ;
- delay ();
- LED4_ON ;
- delay ();
- LED4_OF ;
- delay ();
- }
-
- return 0;
- }不知道咋回事呀,原来有注释的,传上来全部乱码了。。。。。在/doc目录下有一份函数的API说明,大家可以自己去看下函数的用法和功能
复制代码
编译一下没错误,然后配置一下J-Link(我没有用半载的OpenSDA下载器),将核心板和外设板插在一起,并连接外设板的USB线供电(不连接看不到LED有反应的),最后下载就可以看到四个LED轮流点亮啦!到此基于SDK2.0的LED工程就全部完成了。
|
-
库目录
-
工程目录
-
-
实验结果
-
-
1.LED.zip
4.32 MB, 下载次数: 1, 下载积分: 威望 1
工程代码
评分
-
查看全部评分
|