[LKS32 软件]【凌鸥创芯电机开发板LKS32MC071CBT8评测报告】3.新建工程

本帖介绍不使用例程,从头新建一个Keil工程的方法
新建一个文件夹用于存放工程文件和代码文件
 


打开文件夹,将驱动库文件放入这个目录,另外根据自己的习惯建立存放工程文件和用户代码的文件夹
 


打开Keil,选择project-new uVision Project
 


工程保存位置选择刚刚创建的文件夹
 


芯片型号选择Linko->LKS07 Series->LKS32MC071CBT8
 


在Manage Run-Time Environment窗口勾选CMSIS CORE,驱动库对这个组件有依赖,不勾选编译会报错
 


根据自己的习惯在工程下创建分组
 


添加驱动库文件
 


为了省事可以直接添加lks32mc07x_periph_driver\Source文件夹下的全部文件
 


添加头文件包含路径,将lks32mc07x_periph_driver\Include和UserCode包含进来
 


其它工程参数设置,按照例程的工程设置进行调整即可
如果你用的是新版本MDK,这里默认是用的AC6编译器,用这个编译库文件会报错需要改为AC5,MDK从5.37开始不再集成AC5编译器,如何在新版本MDK上使用AC5请自行百度
 


修改烧录器为自己使用的型号,建议勾选上Reset and Run,不然烧录后需要手动复位程序才能运行
 


 


 


创建main.c,并编写测试代码,这里写的是3个led流水灯的代码,需要注意的是LED3是低电平点亮,而LED1和LED2都是高电平点亮
 

复制

#include "lks32mc07x.h"

#include "lks32mc07x_gpio.h"

#include "lks32mc07x_sys.h"



#define LED_GPIO GPIO0

#define LED1_PIN GPIO_Pin_6

#define LED2_PIN GPIO_Pin_7

#define LED3_PIN GPIO_Pin_3

#define LED_PINS LED1_PIN|LED2_PIN|LED3_PIN



static uint32_t SysClock;

void yuyy_delay_us(uint16_t us)

{

    uint32_t temp;

    SysTick->CTRL = 0x0;               /*!< disable systick function */

    SysTick->LOAD = us * (SysClock/1000000);         /*!< time count for 1us with HSI as SYSCLK */

    SysTick->VAL  = 0x00;              /*!< clear counter */

    SysTick->CTRL = 0x5;               /*!< start discrease with Polling */

    do

    {

        temp = SysTick->CTRL;

    }

    while ((temp & 0x01) && !(temp & (1 << 16))); /*!< wait time count done */

    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;    /*!< Close Counter */

    SysTick->VAL   = 0X00;

}



void yuyy_delay_ms(uint16_t ms)

{

    while(ms--)

        yuyy_delay_us(1000);

}



void SystemInit(void)

{

    SYS_MclkChoice(SYS_MCLK_96M_RC); /*选择当前主时钟频率*/

}



void led_init(void)

{

    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_StructInit(&GPIO_InitStruct);



    GPIO_StructInit(&GPIO_InitStruct);

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;

    GPIO_InitStruct.GPIO_Pin =  LED_PINS;

    GPIO_Init(LED_GPIO, &GPIO_InitStruct);

    GPIO_ResetBits(LED_GPIO, LED1_PIN|LED2_PIN);

    GPIO_SetBits(LED_GPIO, LED3_PIN);

}



void mcu_init(void)

{

    __disable_irq();         /* 关闭中断 中断总开关 */

    SYS_WR_PROTECT = 0x7a83; /*使能系统寄存器写操作*/

    FLASH_CFG |= 0x00080000; /* enable prefetch ,FLASH预取加速使能*/        

    IWDG_DISABLE();                                                /*关闭清零看门狗*/

    SYS_MclkChoice(SYS_MCLK_96M_RC); /*选择当前主时钟频率*/

    SysClock = SYS_ReadMcuClk();

    led_init();        

    yuyy_delay_us(100);          /* 延时等待硬件初始化稳定 */

    SYS_WR_PROTECT = 0x0;    /*关闭系统寄存器写操作*/

    __enable_irq();          /* 开启总中断 */

}



int main(void)

{

    mcu_init();

        while (1)

        {

        GPIO_SetBits(LED_GPIO, LED1_PIN);

                GPIO_ResetBits(LED_GPIO, LED2_PIN);

        GPIO_SetBits(LED_GPIO, LED3_PIN);

                yuyy_delay_ms(200);

        GPIO_ResetBits(LED_GPIO, LED1_PIN);

                GPIO_SetBits(LED_GPIO, LED2_PIN);

        GPIO_SetBits(LED_GPIO, LED3_PIN);

                yuyy_delay_ms(200);

        GPIO_ResetBits(LED_GPIO, LED1_PIN);

                GPIO_ResetBits(LED_GPIO, LED2_PIN);

        GPIO_ResetBits(LED_GPIO, LED3_PIN);

                yuyy_delay_ms(200);

        }

}


编译烧录,查看效果

---------------------
作者:yuyy1989
链接:https://bbs.21ic.com/icview-3309376-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值