Cypress单片机 CY8C4147AZI-S475点亮一颗LED灯

文章描述了作者初次使用Cypress的CY8C4147AZI-S475芯片进行LED灯点亮实验的过程,包括安装正确的IDE版本,新建工程,配置引脚,绑定芯片引脚,以及理解预编译的IO口驱动模式代码。虽然库函数可用,但作者希望深入理解寄存器配置。
摘要由CSDN通过智能技术生成

#关于CY8C4147AZI-S475点亮一颗LED灯
第一次接触Cypress芯片,由于老板后面要用改芯片进行相关项目开发,于是开始在CY8C4147AZI-S475开发板调试起来,首先安装相应的IDE。这里要根据开发板上的芯片型号来安装相应的IDE版本,下载器不然识别不了。 刚开始直接在官网上下载了一个PSoCCreatorSetup_4.4_b80。安装编写了一个点灯程序,识别不了,无法烧录。后来又在官网上找到了CY8CKIT149Setup_RevSS.exe这个重新安装后就可以正常编译下载了。这个CY8CKIT149Setup_RevSS安装后显示的也是PSoC Creator,但是其中有一个Kits直接包含了CY8CKIT149,Kits应该是一个MCU包,没有这个IDE识别不了相应的芯片,虽然他能编译,但是烧录不了;第一次安装的IDE,Kits这里没有相应的组件;不知道是不是这个原因。
Alt
点灯的过程:
第一步:新建一个工程
File---->New------>Project,
CY8C4147AZI-S475所属的系类类别
根据芯片的型号选择对应的芯片型号类别建立一个空白的工程,然后填写工程名称,工作区间名称,保存位置;
新建工程
第二步:在IDE右侧的操作栏中选择Cypress,找到Ports and pins 拖出一个引脚,在从Off-Chip的Diodes中拖出一颗LED(off-Chip这个步骤可以不做),但是Cypress这个IED可以只管的搭出硬件电路,然后绑定编程;搭建起来更直观;
硬件电路搭建
双击拖出来的pin引脚,设置成输出,给引脚重新命名为LED_Pin,名字可以随便定义,该名字会直接影响到后面设置该引脚对应的API函数的名字
引脚的设置
第四步:绑定芯片引脚,双击IDE右侧的xxx.cydwr,xxx为工程名,本工程名为LED;在弹出的界面中将刚刚原理图中的LED_Pin与芯片的引脚绑定;开发板原理图上LED灯是连接P3.4;
绑定芯片引脚
第五步:编译,在mani()函数中添加自己的代码:
在mian函数中添加LED点灯代码
点灯的API函数是IED自己生成的;在LED_Pin这个文件夹里有相关的.c文件;

main()函数里在for循环前只对一个全局中断进行了使能,并没有对IO口进行初始化,但是实际烧录进开发板中时,验证功能时OK的;打开LED_Pin文件夹下的LED_Pin.c发现有这样一段预编译代码:

#if defined(LED_Pin__PC)
    #define LED_Pin_SetP4PinDriveMode(shift, mode)  \
    do { \
        LED_Pin_PC =   (LED_Pin_PC & \
                                (uint32)(~(uint32)(LED_Pin_DRIVE_MODE_IND_MASK << \
                                (LED_Pin_DRIVE_MODE_BITS * (shift))))) | \
                                (uint32)((uint32)(mode) << \
                                (LED_Pin_DRIVE_MODE_BITS * (shift))); \
    } while (0)
#else
    #if (CY_PSOC4_4200L)
        #define LED_Pin_SetP4PinDriveMode(shift, mode)  \
        do { \
            LED_Pin_USBIO_CTRL_REG = (LED_Pin_USBIO_CTRL_REG & \
                                    (uint32)(~(uint32)(LED_Pin_DRIVE_MODE_IND_MASK << \
                                    (LED_Pin_DRIVE_MODE_BITS * (shift))))) | \
                                    (uint32)((uint32)(mode) << \
                                    (LED_Pin_DRIVE_MODE_BITS * (shift))); \
        } while (0)
    #endif
#endif

应该是在这里进行了IO口的init配置,有些不习惯这样的写法;暂时没有找到该芯片的寄存器手册,无法对这段代码中配置的相应的位做出分析;虽然有库函数可以用,但是不知根知底总是觉得没有掌握;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值