#立创·梁山派·天空星# GD32F407VET6的高级定时器0输出3路互补PWM

1. 简述

仿照立创开源天空星入门手册编写,其开源的模板只有通用定时器1的PWM配置
参考来源: 立创开源天空星入门手册 第十八、PWM呼吸灯

2. PWM配置流程

  • 配置通道引脚GPIO
  • 配置定时器
  • 配置输出结构体
  • 配置定时器输出通道
  • 配置定时器输出通道占空比

2.1 配置通道引脚GPIO

GD32F407VET6有2个高级定时器,定时器0、定时器7。本次使用的是定时器0,查找数据手册的第66页可知,定时器通道及其复用功能,如图2-1-1所示。
在这里插入图片描述

图2-1-1
  这里选择PE8、PE9、PE10、PE11、PE12、PE13的复用功能AF1进行操作,对应进行PWM输出。
定时器0通道互补通道引脚普通通道引脚
TIMER0_CH0PE8PE9
TIMER0_CH1PE10PE11
TIMER0_CH2PE12PE13

要操作GPIO引脚,必不可少的就是对GPIO进行配置,开启时钟,配置模式,配置输出,设置复用功能等一系列的操作。    
引脚宏定义如下:

 /* PE8 TIMER0_CH0_ON */
#define PWM_TIMERX 
#define BSP_PWM4_RCU             RCU_GPIOE
#define BSP_PWM4_PORT            GPIOE
#define BSP_PWM4_PIN             GPIO_PIN_8
#define BSP_PWM4_AF              GPIO_AF_1

 /* PE9 TIMER0_CH0 */
#define PWM_TIMERX 
#define BSP_PWM1_RCU             RCU_GPIOE
#define BSP_PWM1_PORT            GPIOE
#define BSP_PWM1_PIN             GPIO_PIN_9
#define BSP_PWM1_AF              GPIO_AF_1

 /* PE10 TIMER0_CH1_ON */
#define PWM_TIMERX 
#define BSP_PWM5_RCU             RCU_GPIOE
#define BSP_PWM5_PORT            GPIOE
#define BSP_PWM5_PIN             GPIO_PIN_10
#define BSP_PWM5_AF              GPIO_AF_1

 /* PE11 TIMER0_CH1 */
#define PWM_TIMERX 
#define BSP_PWM2_RCU             RCU_GPIOE
#define BSP_PWM2_PORT            GPIOE
#define BSP_PWM2_PIN             GPIO_PIN_11
#define BSP_PWM2_AF              GPIO_AF_1

 /* PE12 TIMER0_CH2_ON */
#define PWM_TIMERX 
#define BSP_PWM6_RCU             RCU_GPIOE
#define BSP_PWM6_PORT            GPIOE
#define BSP_PWM6_PIN             GPIO_PIN_12
#define BSP_PWM6_AF              GPIO_AF_1

 /* PE13 TIMER0_CH2 */
#define PWM_TIMERX 
#define BSP_PWM3_RCU             RCU_GPIOE
#define BSP_PWM3_PORT            GPIOE
#define BSP_PWM3_PIN             GPIO_PIN_13
#define BSP_PWM3_AF              GPIO_AF_1

初始化GPIO引脚的配置,如下(其他端口类似):

 /* 开启PWM1时钟 */
    rcu_periph_clock_enable(BSP_PWM1_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM1_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM1_PIN);
    gpio_output_options_set(BSP_PWM1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM1_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM1_PORT, BSP_PWM1_AF, BSP_PWM1_PIN);

    /* 开启PWM2时钟 */
    rcu_periph_clock_enable(BSP_PWM2_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM2_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM2_PIN);
    gpio_output_options_set(BSP_PWM2_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM2_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM2_PORT, BSP_PWM2_AF, BSP_PWM2_PIN);

    /* 开启PWM3时钟 */
    rcu_periph_clock_enable(BSP_PWM3_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM3_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM3_PIN);
    gpio_output_options_set(BSP_PWM3_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM3_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM3_PORT, BSP_PWM3_AF, BSP_PWM3_PIN);

    /* 开启PWM4时钟 */
    rcu_periph_clock_enable(BSP_PWM4_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM4_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM4_PIN);
    gpio_output_options_set(BSP_PWM4_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM4_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM4_PORT, BSP_PWM4_AF, BSP_PWM4_PIN);

    /* 开启PWM5时钟 */
    rcu_periph_clock_enable(BSP_PWM5_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM5_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM5_PIN);
    gpio_output_options_set(BSP_PWM5_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM5_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM5_PORT, BSP_PWM5_AF, BSP_PWM5_PIN);

    /* 开启PWM6时钟 */
    rcu_periph_clock_enable(BSP_PWM6_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM6_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM6_PIN);
    gpio_output_options_set(BSP_PWM6_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM6_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM6_PORT, BSP_PWM6_AF, BSP_PWM6_PIN);

需要注意的点就是设置复用功能的时候配置为GPIO_AF_1,因为我们使用的是引脚的AF1的功能。

2.2 配置定时器

PWM输出是依赖于定时器的,所以要对定时器进行配置,但是我们不使用定时器的中断功能,故不用对定时器的中断进行配置。
这里我们要配置定时器0的参数。关于定时器0的宏定义如下:

/* TIMER */
#define BSP_PWM_TIMER_RCU          RCU_TIMER0  // 定时器时钟
#define BSP_PWM_TIMER              TIMER0      // 定时器

2.3 配置输出结构体

要使用定时器的PWM功能就是用定时器的输出功能,关于输出功能的参数配置有一个结构体,如图2-3-1所示。
在这里插入图片描述

图2-3-1
  • outputstate:通道输出状态,一般是使能TIMER_CCX_ENABLE,使能PWM输出到端口。
  • outputnstate:互补通道输出状态,一般是使能TIMER_CCXN_ENABLE,使能PWM输出到端口。
  • ocpolarity:通道输出的极性,也就是配置为低电平有效还是高电平有效,这里配置为高电平有效TIMER_OC_POLARITY_HIGH。
  • ocnpolarity:互补通道输出的极性,也就是配置为低电平有效还是高电平有效,这里配置为高电平有效TIMER_OCN_POLARITY_HIGH。
  • ocidlestate:通道空闲输出状态,也就是配置为低电平有效还是高电平有效,这里配置为低电平有效TIMER_OC_IDLE_STATE_LOW。
  • ocnidlestate:互补通道空闲输出状态,也就是配置为低电平有效还是高电平有效,这里配置为高电平有效TIMER_OCN_IDLE_STATE_LOW。
    注意:通道输出的极性互补通道输出的极性需要配置为相同电平,才是互补输出。
    参考配置,如下:
/* 定义定时器参数结构体 */
    timer_oc_parameter_struct timer_oc_initpara;
    /* 通道输出状态 */
    timer_oc_initpara.outputstate = TIMER_CCX_ENABLE;
    /* 互补通道输出状态 */
    timer_oc_initpara.outputnstate = TIMER_CCXN_ENABLE;
    /* 通道输出的极性 */
    timer_oc_initpara.ocpolarity = TIMER_OC_POLARITY_HIGH;
    /* 互补通道输出的极性 */
    timer_oc_initpara.ocnpolarity = TIMER_OCN_POLARITY_HIGH;
    /* 通道空闲输出状态 */
    timer_oc_initpara.ocidlestate = TIMER_OC_IDLE_STATE_LOW;
    /* 互补通道空闲输出状态 */
    timer_oc_initpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;

2.4 配置定时器输出通道

配置好输出通道参数之后,需要初始化这个结构体,并且还需要配置使用定时器的通道几进行输出。

void timer_channel_output_config(
uint32_t timer_periph,uint16_t channel, timer_oc_parameter_struct* ocpara);

这个函数是配置定时器通道的输出功能,有三个参数,第一个参数就是要使能的定时器外设,第二个参数是要使能的定时器通道,第三个参数是配置的输出结构体。
   配置定时器输出功能代码如下:

/* 配置定时器输出功能 */
    timer_channel_output_config(BSP_PWM_TIMER, TIMER_CH_0, &timer_oc_initpara);
    timer_channel_output_config(BSP_PWM_TIMER, TIMER_CH_1, &timer_oc_initpara);
    timer_channel_output_config(BSP_PWM_TIMER, TIMER_CH_2, &timer_oc_initpara);

2.5 配置定时器输出通道占空比

void timer_channel_output_pulse_value_config(
uint32_t timer_periph, uint16_t channel, uint32_t pulse);

这个函数是配置定时器通道输出的脉冲值。有三个参数,第一个参数是要配置的定时器,第二个参数是要配置的定时器通道,第三个参数是要设置的脉冲值。脉冲值的取值范围为(0-65535)。一般我们调节占空比也是调用这个函数,通过设置这个通道的输出脉冲值,改变不同的占空比。
   这里我们将占空比设置为30%,配置如下:

/* 配置定时器通道输出脉冲值 */
    timer_channel_output_pulse_value_config(BSP_PWM_TIMER, TIMER_CH_0, 2999);
    timer_channel_output_pulse_value_config(BSP_PWM_TIMER, TIMER_CH_1, 2999);
    timer_channel_output_pulse_value_config(BSP_PWM_TIMER, TIMER_CH_2, 2999);

这个函数是配置外设定时器通道输出比较模式。有三个参数,第一个参数是要配置的定时器外设,第二个参数是要配置的定时器通道,第三个参数是要配置的比较模式。
   关于第三个参数的可选选项如图2-5-1所示。
    


    在这里插入图片描述

 图2-5-1

   这里设置为PWM模式0,也就是配置为TIMER_OC_MODE_PWM0。配置代码如下:

/* 配置定时器通道输出比较模式 */
    timer_channel_output_mode_config(BSP_PWM_TIMER, TIMER_CH_0,
                                     TIMER_OC_MODE_PWM0);
    timer_channel_output_mode_config(BSP_PWM_TIMER, TIMER_CH_1,
                                     TIMER_OC_MODE_PWM0);
    timer_channel_output_mode_config(BSP_PWM_TIMER, TIMER_CH_2,
                                     TIMER_OC_MODE_PWM0);

2.6 配置定时器输出优先级配置(高级定时器才需要配置)

 /* 配置定时器输出优先级配置,高级定时器配置才有输出 */
    timer_primary_output_config(BSP_PWM_TIMER, ENABLE);

2.7 使能定时器

 /* 使能定时器 */
    timer_enable(BSP_PWM_TIMER);

3. 最终效果——输出波形

这是使用正点原子DS100示波器查看的PE9、PE8的输出波形,如下图3-1、图3-2所示。
在这里插入图片描述

图3-1 PE9(通道0输出波形)

在这里插入图片描述

图3-2 PE8(通道0互补输出波形)

4. 完整参考代码

4.1 pwm.h

 #ifndef PWM_H
#define PWM_H

#ifdef __cplusplus
extern "C"
{
#endif
#include "board.h"

    /* PE8 TIMER0_CH0_ON */
#define PWM_TIMERX
#define BSP_PWM4_RCU  RCU_GPIOE
#define BSP_PWM4_PORT GPIOE
#define BSP_PWM4_PIN  GPIO_PIN_8
#define BSP_PWM4_AF   GPIO_AF_1

    /* PE9 TIMER0_CH0 */
#define PWM_TIMERX
#define BSP_PWM1_RCU  RCU_GPIOE
#define BSP_PWM1_PORT GPIOE
#define BSP_PWM1_PIN  GPIO_PIN_9
#define BSP_PWM1_AF   GPIO_AF_1

    /* PE10 TIMER0_CH1_ON */
#define PWM_TIMERX
#define BSP_PWM5_RCU  RCU_GPIOE
#define BSP_PWM5_PORT GPIOE
#define BSP_PWM5_PIN  GPIO_PIN_10
#define BSP_PWM5_AF   GPIO_AF_1

    /* PE11 TIMER0_CH1 */
#define PWM_TIMERX
#define BSP_PWM2_RCU  RCU_GPIOE
#define BSP_PWM2_PORT GPIOE
#define BSP_PWM2_PIN  GPIO_PIN_11
#define BSP_PWM2_AF   GPIO_AF_1

    /* PE12 TIMER0_CH2_ON */
#define PWM_TIMERX
#define BSP_PWM6_RCU  RCU_GPIOE
#define BSP_PWM6_PORT GPIOE
#define BSP_PWM6_PIN  GPIO_PIN_12
#define BSP_PWM6_AF   GPIO_AF_1

    /* PE13 TIMER0_CH2 */
#define PWM_TIMERX
#define BSP_PWM3_RCU      RCU_GPIOE
#define BSP_PWM3_PORT     GPIOE
#define BSP_PWM3_PIN      GPIO_PIN_13
#define BSP_PWM3_AF       GPIO_AF_1

/**
 *  TIMER
 *
 **/
#define BSP_PWM_TIMER_RCU RCU_TIMER0 // 定时器时钟
#define BSP_PWM_TIMER     TIMER0     // 定时器

    /**
     *
     *
     */

    void pwm_init(void);
#ifdef __cplusplus
}
#endif

#endif // !PWM_H

4.2 pwm.c

#include "pwm.h"

static void PWM_GPIO_Init(void)
{
    /* 开启PWM1时钟 */
    rcu_periph_clock_enable(BSP_PWM1_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM1_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM1_PIN);
    gpio_output_options_set(BSP_PWM1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM1_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM1_PORT, BSP_PWM1_AF, BSP_PWM1_PIN);

    /* 开启PWM2时钟 */
    rcu_periph_clock_enable(BSP_PWM2_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM2_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM2_PIN);
    gpio_output_options_set(BSP_PWM2_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM2_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM2_PORT, BSP_PWM2_AF, BSP_PWM2_PIN);

    /* 开启PWM3时钟 */
    rcu_periph_clock_enable(BSP_PWM3_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM3_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM3_PIN);
    gpio_output_options_set(BSP_PWM3_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM3_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM3_PORT, BSP_PWM3_AF, BSP_PWM3_PIN);

    /* 开启PWM4时钟 */
    rcu_periph_clock_enable(BSP_PWM4_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM4_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM4_PIN);
    gpio_output_options_set(BSP_PWM4_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM4_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM4_PORT, BSP_PWM4_AF, BSP_PWM4_PIN);

    /* 开启PWM5时钟 */
    rcu_periph_clock_enable(BSP_PWM5_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM5_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM5_PIN);
    gpio_output_options_set(BSP_PWM5_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM5_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM5_PORT, BSP_PWM5_AF, BSP_PWM5_PIN);

    /* 开启PWM6时钟 */
    rcu_periph_clock_enable(BSP_PWM6_RCU);
    /* 配置IO参数 */
    gpio_mode_set(BSP_PWM6_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, BSP_PWM6_PIN);
    gpio_output_options_set(BSP_PWM6_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,
                            BSP_PWM6_PIN);
    /* 配置IO为定时器的通道 */
    gpio_af_set(BSP_PWM6_PORT, BSP_PWM6_AF, BSP_PWM6_PIN);
}

static void PWM_TIMER_Init(void)
{

    /* 定义定时器结构体 */
    timer_parameter_struct timer_initpara;
    /* 开启定时器时钟 */
    rcu_periph_clock_enable(BSP_PWM_TIMER_RCU);
    /* 重置定时器 */
    timer_deinit(BSP_PWM_TIMER);
    /* 时钟预分频值  PSC_CLK= 168MHZ / 168 = 1MHZ */
    timer_initpara.prescaler = 168 - 1;
    /* 中央对齐模式3 */
    timer_initpara.alignedmode = TIMER_COUNTER_CENTER_BOTH;
    /* 向上计数 */
    timer_initpara.counterdirection = TIMER_COUNTER_UP;
    /*周期T = 10000  1MHZ = 10ms  f = 100HZ */
    timer_initpara.period = 10000 - 1;
    /* 分频因子 */
    timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
    /* 重复计数器 0-255 */
    timer_initpara.repetitioncounter = 0;
    /* 初始化定时器 */
    timer_init(BSP_PWM_TIMER, &timer_initpara);

    /* 定义定时器参数结构体 */
    timer_oc_parameter_struct timer_oc_initpara;
    /* 通道输出状态 */
    timer_oc_initpara.outputstate = TIMER_CCX_ENABLE;
    /* 互补通道输出状态 */
    timer_oc_initpara.outputnstate = TIMER_CCXN_ENABLE;
    /* 通道输出的极性 */
    timer_oc_initpara.ocpolarity = TIMER_OC_POLARITY_HIGH;
    /* 互补通道输出的极性 */
    timer_oc_initpara.ocnpolarity = TIMER_OCN_POLARITY_HIGH;
    /* 通道空闲输出状态 */
    timer_oc_initpara.ocidlestate = TIMER_OC_IDLE_STATE_LOW;
    /* 互补通道空闲输出状态 */
    timer_oc_initpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
    /* 配置定时器输出功能 */
    timer_channel_output_config(BSP_PWM_TIMER, TIMER_CH_0, &timer_oc_initpara);
    timer_channel_output_config(BSP_PWM_TIMER, TIMER_CH_1, &timer_oc_initpara);
    timer_channel_output_config(BSP_PWM_TIMER, TIMER_CH_2, &timer_oc_initpara);
    /* 配置定时器通道输出脉冲值 */
    timer_channel_output_pulse_value_config(BSP_PWM_TIMER, TIMER_CH_0, 2999);
    timer_channel_output_pulse_value_config(BSP_PWM_TIMER, TIMER_CH_1, 2999);
    timer_channel_output_pulse_value_config(BSP_PWM_TIMER, TIMER_CH_2, 2999);
    /* 配置定时器通道输出比较模式 */
    timer_channel_output_mode_config(BSP_PWM_TIMER, TIMER_CH_0,
                                     TIMER_OC_MODE_PWM0);
    timer_channel_output_mode_config(BSP_PWM_TIMER, TIMER_CH_1,
                                     TIMER_OC_MODE_PWM0);
    timer_channel_output_mode_config(BSP_PWM_TIMER, TIMER_CH_2,
                                     TIMER_OC_MODE_PWM0);
    /* 配置定时器输出优先级配置,高级定时器配置才有输出 */
    timer_primary_output_config(BSP_PWM_TIMER, ENABLE);
    /* 使能定时器 */
    timer_enable(BSP_PWM_TIMER);
}

void pwm_init(void)
{
    PWM_GPIO_Init();
    PWM_TIMER_Init();
}


此次分享结束,不定期跟新。

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好,使用立创EDA画STM32F103C8T6,您可以按照以下步骤进行操作: 1. 打开立创EDA软件,选择新建工程,选择STM32F103C8T6芯片型号。 2. 在工程中添加所需的元件,例如晶振、电容、电阻等。 3. 连接元件,按照STM32F103C8T6的引脚图进行连接。 4. 进行电图的布局和连线,确保电图的正确性。 5. 进行PCB布局,将电图转换为PCB布局图。 6. 进行PCB连线,确保PCB布局的正确性。 7. 导出Gerber文件,进行PCB制板。 以上是使用立创EDA画STM32F103C8T6的基本步骤,希望对您有所帮助。 ### 回答2: 首先,立创EDA是一款非常实用的电设计软件,它为STM32F103C8T6这样的单片机设计提供了非常好的支持。使用立创EDA画STM32F103C8T6,需要进行以下步骤: 1. 在电设计中,要根据STM32F103C8T6的规格书进行针脚的连接。首先,在立创EDA的元器件库中找到STM32F103C8T6,把它拖动到电图中。这样,STM32F103C8T6就会以缩略图的形式呈现在电图中。 2. 在STM32F103C8T6上添加必要的外围电元件,如晶振、稳压器、电容和推挽电阻等。需要注意的是,在添加外围电元件时,要了解ESTM32F103C8T6芯片的规格书和参考设计。 3. 连接所有元器件和导线。连接时一定要根据芯片规格书和参考设计,以确保电工作的可靠性。在连接时可以使用EDA自带的自动走线功能,也可以手动连接导线。 4. 进行电仿真。在完成电设计后,使用立创EDA自带的仿真功能进行仿真。仿真可模拟器件在电工作正常时的性能和特性,以便及时发现问题并解决。针对STM32F103C8T6的电设计可以进行信号仿真和电源仿真。 5. 导出PCB图。当电设计及其仿真都通过后,可以将电图导出到PCB绘图软件中进行PCB设计。在完成PCB设计后,再次进行电仿真以验证PCB设计的正确性。 总而言之,使用立创EDA对STM32F103C8T6进行电设计,需要对芯片的规格书和参考设计有非常清晰的理解,并严格按照规格书和参考设计进行设计和仿真。同时,要熟练掌握立创EDA的使用方法,以便快速高效地完成电设计任务。 ### 回答3: 立创EDA是一款非常实用的电设计软件,可以帮助工程师快速完成各种电设计和仿真工作,其中也包括了对STM32F103C8T6芯片的支持,下面我们就来讲一下如何使用立创EDA画STM32F103C8T6。 首先,我们需要先下载和安装立创EDA软件。安装完成后,我们需要导入STM32F103C8T6芯片的库文件,以便在设计中使用。在立创EDA的菜单栏中找到“元器件库管理”选项,然后选择STM32F1系列芯片库文件进行导入。 导入完成后,在立创EDA的主界面上方,可以看到“元器件库”按钮,点击后会弹出库文件列表,选择我们导入的STM32F1系列芯片库就可以看到其中包含了STM32F103C8T6芯片。 在设计中,需要用到的元器件可以通过拖动和放置的方式添加进电图中。对于STM32F103C8T6芯片,我们需要先添加其封装为LQFP48或LQFP64的芯片元件,随后根据需要选择添加其他外围元器件,例如晶振、电容、电阻等等。 添加完元器件后,我们需要进行电连接,将各个元器件之间的引脚进行连线,建立电图的逻辑关系。可以通过直接拖动线条的方式或者使用连接工具进行连线。 完成电连接后,我们需要进行仿真操作,检查电图的正确性和性能。立创EDA内置了丰富的仿真工具,可以直接在软件中进行电的测试和调试。使用仿真工具时,需要先进行仿真设置,定义仿真的参数、时钟频率等等。 最后,完成电设计后,我们需要将其导出为PCB文件,并进行布线、元器件放置和生成制板文件等步骤,最终完成整个电的设计和制造。 以上就是使用立创EDA画STM32F103C8T6的基本步骤,需要注意的是,需要参考官方文档和芯片资料手册,了解STM32F103C8T6芯片的规格和特性,才能保证电设计的正确性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值