3125|3

36

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

极海APM32E103VET6测评之工程建立(Keil) [复制链接]

  本帖最后由 Zachary_yo 于 2022-9-12 22:12 编辑

        首先,当我收到开发板时发现板载资源相对较少,但又想到是“MINI Board"又觉得情有可原。当然,这并不影响我测评这块开发板,I2C、SPI、485等我都将以飞线到别的板子上来测试。本贴主要实现APM32E103VET6这款芯片在Keil环境下的工程建立,最终以实现LED灯以10Hz的频率(高低点评间隔100mS)闪烁。程序主要包括systick精确延时、GPIO外设使用。

1、首先在文件夹工程文件夹内创建如下文件夹,如下图所示;

2、将官方SDK中的相关文件拷贝到自己新建的工程文件夹的Libraries中,如下图所示;

 

3、在Bsp文件夹中新建两个文件夹分别为inc和src,如下图所示;            

        4、在keil主界面中选择 Project->New uVision Project创建新的工程,并将工程文件保存在自建工程的Project文件夹中,随后在弹出页面中选择APM32E103VET6芯片,并点击OK,如下图所示;

        5、点击工程项目管理按钮,并在弹出界面中建立相关虚拟文件夹,如下图所示;

6、在建立的虚拟文件夹中添加相关文件,添加后,如下图所示;    

7、上图中部分文件除bsp_Gpio.c、delay.c、mycrc.c、userlib.c外,都来自官方SDK包中,添加完文件后,需要点击Keil的魔术棒工具,找到C/C++,添加头文件路径;如下图所示;

8、至此,编译工程,会报大量错误,原因是没有包含相关头文件,因此我们仿照STM32,建立一个apm32e103_conf.h文件,来包含芯片所需的头文件,内容如下;

9、至此,点击编译全部通过且无错误,工程建立完毕。过程如有不详,请见谅,请参考上传的工程文件。 

10、以下是systick精确定时的代码; 

/**
  ************************************* Copyright ****************************** 
  *
  *                 (C) Copyright 2022,Zachary ,HPU, China.
  *                            All Rights Reserved
  *    
  * FileName   : delay.c   
  * Version    : v1.0        
  * Author     : Zachary            
  * Date       : 2022-09-13        
  * Description: This is the first edition on APM32E103VET6
                                            ---Zachary,in Zhejiang Hanpu. 
  ******************************************************************************
 */

/* ---Includes----------------------------------------------------------- */
#include "main.h"
/* --- Typedef -----------------------------------------------------------*/
/* --- Define ------------------------------------------------------------*/
/* --- Macro -------------------------------------------------------------*/
/* --- Variables ---------------------------------------------------------*/
static uint16_t fac_us;
/* --- Functions ---------------------------------------------------------*/
/*------------------------------------------------------------------------*/

/**************************************************************
  * @name    delay_init                                    
  * @brief  
  * @param   SYSCLK: [输入/出] 
  * @retval
  * @author  Zachary
  * @Data    2022-01-29
 **************************************************************/
void delay_init( uint16_t SYSCLK )
{
    SysTick_ConfigCLKSource( SYSTICK_CLK_SOURCE_HCLK );
    SysTick_Config( SystemCoreClock / 1000 );
    fac_us = SYSCLK; 
}

/**************************************************************
  * @Name    delay_us                                    
  * @brief  
  * @param   nus: [输入/出] 
  * @retval
  * @author  Zachary
  * @Data    2022-01-29
 **************************************************************/
void delay_us( uint32_t nus )
{
    uint32_t ticks;                /* 滴答次数 */
    uint32_t t_now,t_old;        /* 当前SYSTICK->VAL/上一次的SYSTICK->VAL */
    uint32_t tcnt = 0;
    ticks = fac_us*nus;            /* 计算共需要多少次滴答 */
    t_old = SysTick->VAL;        /* 获取计数值 */
    while(1)
    {
        t_now = SysTick->VAL;
        if(t_now != t_old)
        {
            if(t_now < t_old) {
                tcnt = tcnt + t_old - t_now;
            }
            else {
                tcnt = tcnt + SysTick->LOAD - t_now + t_old;
            }
            t_old = t_now;
            if(tcnt>=ticks)    break;
        }
    }
}
/**************************************************************
  * @Name    delay_ms                                    
  * @brief  
  * @param   nms: [输入/出] 
  * @retval
  * @author  Zachary
  * @Data    2022-01-29
 **************************************************************/
void delay_ms( uint32_t nms )
{
    for( ; nms > 0; nms-- )
        delay_us( 1000 );
}

        11、以下是GPIO LED灯代码;

/**
  ************************************* Copyright ******************************   
  *                 (C) Copyright 2022,Zachray,HPU, China.
  *                            All Rights Reserved
  *
  * FileName   : bsp_Usart.h
  * Version    : v1.0
  * Author     : Zachary
  * Date       : 2022-09-13
  * Description: This is the first edition on APM32E103VET6
                                            ---Zachary,in Zhejiang Hanpu.
  ******************************************************************************
 */
#ifndef __BSP_GPIO_H_
#define __BSP_GPIO_H_

/* Includes --------------------------------------------------------------*/
#include "main.h"
/* --- Define ------------------------------------------------------------*/
#define LED1_PIN                GPIO_PIN_8
#define LED1_PORT                GPIOB
#define LED1_PORT_CLK_ENABLE()    RCM_EnableAPB2PeriphClock( RCM_APB2_PERIPH_GPIOB );

#define LED2_PIN                GPIO_PIN_9
#define LED2_PORT                GPIOB
#define LED2_PORT_CLK_ENABLE()    RCM_EnableAPB2PeriphClock( RCM_APB2_PERIPH_GPIOB );

#define KEY1_PIN                GPIO_PIN_0
#define KEY1_PORT                GPIOA
#define KEY1_PORT_CLK_ENABLE()    RCM_EnableAPB2PeriphClock( RCM_APB2_PERIPH_GPIOA );

#define KEY2_PIN                GPIO_PIN_1
#define KEY2_PORT                GPIOA
#define KEY2_PORT_CLK_ENABLE()    RCM_EnableAPB2PeriphClock( RCM_APB2_PERIPH_GPIOA );
/* --- Typedef -----------------------------------------------------------*/
/* --- Variables ---------------------------------------------------------*/
/* --- Functions ---------------------------------------------------------*/
void bsp_Gpio_Init( void );
/*------------------------------------------------------------------------*/

#endif      /* __BSP_GPIO_H_ */


/**************************************************************
  * @Name    bsp_Gpio_Init                                    
  * @brief  
  * @param   None
  * @retval
  * @author  Zachary
  * @Data    2022-01-29
 **************************************************************/
void bsp_Gpio_Init( void )
{
    GPIO_Config_T s_GPIO_InitStruct;
    
    /* ---Config the Clock of the Gpios--- */
    LED1_PORT_CLK_ENABLE();
    LED2_PORT_CLK_ENABLE();
    KEY1_PORT_CLK_ENABLE();
    KEY2_PORT_CLK_ENABLE();
    
    /* ---Config GPIOs' Output Status--- */
    GPIO_SetBits( LED1_PORT, LED1_PIN );
    GPIO_SetBits( LED2_PORT, LED2_PIN );
    
    /* ---Config Led1 pin Parameters--- */
    s_GPIO_InitStruct.pin = LED1_PIN;
    s_GPIO_InitStruct.mode = GPIO_MODE_OUT_PP;
    s_GPIO_InitStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config( LED1_PORT, &s_GPIO_InitStruct );
    
    /* ---Config Led2 pin Parameters--- */
    s_GPIO_InitStruct.pin = LED2_PIN;
    s_GPIO_InitStruct.mode = GPIO_MODE_OUT_PP;
    s_GPIO_InitStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config( LED2_PORT, &s_GPIO_InitStruct );
    
    /* ---Config Key1 pin Parameters--- */
    s_GPIO_InitStruct.pin = KEY1_PIN;
    s_GPIO_InitStruct.mode = GPIO_MODE_IN_PD;
    GPIO_Config( KEY1_PORT, &s_GPIO_InitStruct );
    
    /* ---Config Key2 pin Parameters--- */
    s_GPIO_InitStruct.pin = KEY2_PIN;
    s_GPIO_InitStruct.mode = GPIO_MODE_IN_PD;
    GPIO_Config( KEY2_PORT, &s_GPIO_InitStruct );

}

        12、主程序代码:

/**
  ************************************* Copyright ****************************** 
  *
  *                 (C) Copyright 2022,Zachary ,HPU, China.
  *                            All Rights Reserved
  *    
  * FileName   : main.c   
  * Version    : v1.0        
  * Author     : Zachary            
  * Date       : 2022-09-13      
  * Description: This is the first edition on APM32E103VET6
                                            ---Zachary,in Zhejiang Hanpu.
  ******************************************************************************
 */

/* Includes --------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include "main.h"
#include "bsp_Gpio.h"

/* --- Typedef -----------------------------------------------------------*/
/* --- Define ------------------------------------------------------------*/
/* --- Macro -------------------------------------------------------------*/
/* --- Variables ---------------------------------------------------------*/
/* --- Functions ---------------------------------------------------------*/
static void SysInit( void );

/*------------------------------------------------------------------------*/
/**************************************************************
  * @Name    main                                    
  * @brief  
  * @param   None
  * @retval
  * @author  Zachary
  * @Data    2022-09-13
 **************************************************************/
int main( void )
{
    SysInit();
    
    while( 1 )
    {
        GPIO_ResetBits( LED1_PORT, LED1_PIN );
        GPIO_ResetBits( LED2_PORT, LED2_PIN );
        delay_ms( 100 );
        GPIO_SetBits( LED1_PORT, LED1_PIN );
        GPIO_SetBits( LED2_PORT, LED2_PIN );
        delay_ms( 100 );
    }
}

/**************************************************************
  * @Name    SysInit                                   
  * @brief                                                    
  * @param   None                                     
  * @retval                                                   
  * @author  Zachary                                          
  * @Data    2022-09-13                                           
 **************************************************************/
static void SysInit( void )
{
    delay_init( 120 );
    bsp_Gpio_Init();
    
}

APM32E103VET6_Template_App.7z

573.94 KB, 下载次数: 26

最新回复

很好        详情 回复 发表于 2024-6-25 14:11
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

编译工程没有包含相关头文件确实是会报大量错误

 
 
 

回复

7244

帖子

2

TA的资源

版主

板凳
 

极海APM32E103VET6应该有对标其他厂家的某个型号芯片吧?

 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

4
 

很好     

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表