打印
[APM32E0]

APM32E030 工程模版的新建

[复制链接]
313|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 LIZARD925 于 2025-6-14 22:08 编辑

#技术资源# #申请原创#

APM32E030系列使用记录--点亮一个LED灯
将极海官网的例程根据江科大的例程,生成了一个工程模版,在这里介绍一下如何在这个工程模板上进行点灯操作,例程已上传附件
我们先打开工程模版,新建一个system 的文件夹,放我们的延时函数,延时函数可直接拿stm32f1的延时函数直接用,并添加文件的路径

将延时函数复制过来即可使用,添加进工程后,如图所示

#include "apm32e030.h"                  // Device header

/**
  * [url=home.php?mod=space&uid=247401]@brief[/url]  微秒级延时
  * @param  xus 延时时长,范围:0~233015
  * @retval 无
  */
void Delay_us(uint32_t xus)
{
        SysTick->LOAD = 72 * xus;                                //设置定时器重装值
        SysTick->VAL = 0x00;                                        //清空当前计数值
        SysTick->CTRL = 0x00000005;                                //设置时钟源为HCLK,启动定时器
        while(!(SysTick->CTRL & 0x00010000));        //等待计数到0
        SysTick->CTRL = 0x00000004;                                //关闭定时器
}

/**
  * [url=home.php?mod=space&uid=247401]@brief[/url]  毫秒级延时
  * @param  xms 延时时长,范围:0~4294967295
  * @retval 无
  */
void Delay_ms(uint32_t xms)
{
        while(xms--)
        {
                Delay_us(1000);
        }
}

/**
  * [url=home.php?mod=space&uid=247401]@brief[/url]  秒级延时
  * @param  xs 延时时长,范围:0~4294967295
  * @retval 无
  */
void Delay_s(uint32_t xs)
{
        while(xs--)
        {
                Delay_ms(1000);
        }
}
此时我们写一个简单的点灯程序测试延时函数的准确性,使用逻辑分析仪进行测量,可看到时间和我们设置的时间相差无几,IO的初始化也可参考例程进行更改

int main (void)
{
        RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOB);        //打开GPIOB的时钟

        GPIO_Config_T GPIO_InitStructure;   
        
        GPIO_InitStructure.mode = GPIO_MODE_OUT;            // 输出模式
        GPIO_InitStructure.pin = GPIO_PIN_6;      
        GPIO_InitStructure.speed = GPIO_SPEED_50MHz;        
        GPIO_InitStructure.outtype = GPIO_OUT_TYPE_PP;        //推挽输出
        GPIO_Config(GPIOB,&GPIO_InitStructure);

        while(1)
        {
                Delay_ms(500);
                GPIO_WriteBitValue(GPIOB,GPIO_PIN_6,0);
                Delay_ms(500);
                GPIO_WriteBitValue(GPIOB,GPIO_PIN_6,1);
        }
}
此时可看到延时函数没问题,我们将点灯程序进行封装,添加hardware文件夹,放入led.c\led.h文件,如图所示,硬件原理图在此链接进行下载:
https://www.geehy.com/uploads/tool/APM32E030R%20Micro-EVB%20V1.0.SchDoc.pdf

我们初始化PB6和PB7这个两个引脚,调用后测试无误,为流水灯的现象



#include "LED.h"

void LED_init(void)
{
        RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOB);        //打开GPIOB的时钟

        GPIO_Config_T GPIO_InitStructure;   
        
        GPIO_InitStructure.mode = GPIO_MODE_OUT;            // 输出模式
        GPIO_InitStructure.pin = GPIO_PIN_6|GPIO_PIN_7;      
        GPIO_InitStructure.speed = GPIO_SPEED_50MHz;        
        GPIO_InitStructure.outtype = GPIO_OUT_TYPE_PP;        //推挽输出
        GPIO_Config(GPIOB,&GPIO_InitStructure);
        GPIO_SetBit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);                //初始化LED为灭
}

void LED1_on(void)
{
        GPIO_ClearBit(GPIOB,GPIO_PIN_6);  //亮
}

void LED1_off(void)
{
        GPIO_SetBit(GPIOB,GPIO_PIN_6);  //灭
}

void LED2_on(void)
{
        GPIO_ClearBit(GPIOB,GPIO_PIN_7);  //亮
}

void LED2_off(void)
{
        GPIO_SetBit(GPIOB,GPIO_PIN_7);  //灭
}

void LED1_turn(void)
{
        if(GPIO_ReadOutputBit(GPIOB,GPIO_PIN_6)==0)  //电平反转
        {
                GPIO_SetBit(GPIOB,GPIO_PIN_6);
        }
        else
        {
                GPIO_ClearBit(GPIOB,GPIO_PIN_6);
        }
}

void LED2_turn(void)
{
        if(GPIO_ReadOutputBit(GPIOB,GPIO_PIN_7)==0)  //电平反转
        {
                GPIO_SetBit(GPIOB,GPIO_PIN_7);
        }
        else
        {
                GPIO_ClearBit(GPIOB,GPIO_PIN_7);
        }
}

#ifndef __LED_H__
#define __LED_H__

#include "apm32e030.h"                  // Device header
#include "apm32e030_gpio.h"
#include "apm32e030_rcm.h"

void LED_init(void);

void LED1_on(void);
void LED1_off(void);
void LED2_on(void);
void LED2_off(void);
void LED1_turn(void);
void LED2_turn(void);
               
#endif
#include "apm32e030.h"                  // Device header
#include "Delay.h"
#include "LED.h"


int main (void)
{
        LED_init();
        while(1)
        {
                LED1_turn();
                Delay_ms(500);
                LED2_turn();

        }
}




3-1 APM32E030-LED流水灯.zip

170.65 KB

2-1 APM32E030 工程模板.zip

168.18 KB

使用特权

评论回复
沙发
jobszheng| | 2025-6-15 20:40 | 只看该作者
这个小芯片可玩性还是蛮高的。

使用特权

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

本版积分规则

13

主题

15

帖子

0

粉丝