huahuagg 发表于 2025-6-27 20:21

PSOC4点灯

1. 硬件配置(PSoC Creator)
1.1 创建工程
打开PSoC Creator,新建工程(File → New → Project...),选择目标器件(如CY8C4245AXI-483)。

在原理图设计界面(*.cysch)中拖放所需组件。

1.2 添加组件
LED硬件连接:

拖放一个 Digital Output Pin 组件,重命名为LED。

配置引脚属性:

Drive Mode: Strong Drive(默认)

Initial State: 0(初始低电平)

分配物理引脚(如P0),根据实际电路连接调整。

时钟配置(可选):

若需精确延时,拖放 Clock 组件(如CLK_LF),配置频率(例如1kHz)。

1.3 生成代码
点击 Build(或按F5)生成基础代码框架,自动初始化引脚。

huahuagg 发表于 2025-6-27 20:21

#include "project.h"
#include <stdio.h>

int main(void)
{
    CyGlobalIntEnable;// 启用全局中断

    for(;;)
    {
      LED_Write(1);    // LED亮
      CyDelay(500);    // 延时500ms(使用系统默认时钟)
      
      LED_Write(0);    // LED灭
      CyDelay(500);    // 延时500ms
    }
}

huahuagg 发表于 2025-6-27 20:21

关键函数说明
LED_Write(uint8_t value):控制LED引脚电平(1=高,0=低)。

CyDelay(uint32_t milliseconds):毫秒级延时函数(基于系统时钟)。

huahuagg 发表于 2025-6-27 20:22

使用定时器实现精准闪烁(替代CyDelay)
硬件配置:

拖放 TCPWM 组件(定时器),配置为周期触发(如1Hz)。

启用中断,连接至isr_timer。
#include "project.h"

volatile uint8_t led_toggle = 0;
CY_ISR(isr_timer_Handler)
{
    led_toggle ^= 1;       // 翻转状态
    LED_Write(led_toggle);// 更新LED
    Timer_ClearInterrupt(); // 清除中断标志
}

int main(void)
{
    CyGlobalIntEnable;
    isr_timer_StartEx(isr_timer_Handler); // 启动中断
    Timer_Start();                         // 启动定时器

    for(;;) { /* 空循环,由中断处理LED */ }
}

huahuagg 发表于 2025-6-27 20:22

使用PWM调光
拖放 PWM 组件,输出连接至LED引脚,通过PWM_Start()和PWM_WriteCompare()调节亮度。
编译与下载
点击 Build 编译工程,连接开发板(如CY8CKIT-042)。

使用 MiniProg4 或 KitProg 下载程序(点击 Program 按钮)。

huahuagg 发表于 2025-6-27 20:22

实际电路连接
LED连接方式:

PSoC GPIO → 限流电阻(如220Ω) → LED阳极 → LED阴极 → GND。

注意事项:

确认GPIO电压(通常3.3V)与LED规格匹配。

yiyigirl2014 发表于 2025-6-28 12:05

原来比开发单片机还容易。学它。

梅花香自123 发表于 2025-6-30 23:51

掌握这些技巧可以更高效地完成 PSoC 硬件配置,后续你可以进一步扩展功能,如添加 PWM 调光、电容触摸感应等更复杂的应用。

jobszheng 发表于 2025-7-1 09:43

英飞凌的工具软件还是蛮实用的。
我在使用ModusToolBox时,看着其外设初始化代码生成真是舒服。
页: [1]
查看完整版本: PSOC4点灯