打印
[LKS32 软件]

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

[复制链接]
356|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创# 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);
        }
}

编译烧录,查看效果


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

450

帖子

4

粉丝