DDZZ669 发表于 2018-12-14 16:30

【CY8CKIT-149 PSoC 4100S测评】+新建空白工程(以Key-LED为例)

之前的探索都是在官方例程上进行修改,这次我们新建一个空白工程,并添加元件进行项目编写。
并以简单的按键控制LED的小例子进行介绍。

首先是新建一个空白工程,如下图:


完成后可以看到一个空白的原理图,左边项目列表也只有主函数,如下图:


我们可以打开主函数看一下,并先编译一下,如下图:


在原理图面部拉入一个输入Pin和一个输出Pin,输入作为按键的输入,输出作为控制LED亮灭,如下图:


板子上有一个用户按键(3.7)和一个用户LED(3.4),分配给引脚配置:


看一下板子原理图上用户按键和用户LED,按键按下是接地,LED需要高电平点亮:


先编译一下程序,报错,提升输出需要连接一个东西,如下图:


我们在原理图上不需要连接LED,可以将这个引脚去掉,双击进行,取消HW connection的勾选,如下图:


再次编译OK。
我们可以来写主函数了,想要实现的功能是按键按一下,LED的状态翻转一下,即按一下亮,再按一下灭。
写了一个延时函数用于按键消抖时使用。
定义bool变量控制LED的状态。
while(Pin_Key_Read()==0){}语句是等待按键松开。



#include "project.h"

void delay_ms(uint16 t)
{
        uint16 a,b,c;
    for(a=100;a>0;a--)
      for(b=114;b>0;b--)
                   for(c=t;c>0;c--);
}

int main(void)
{
    CyGlobalIntEnable; /* Enable global interrupts. */

    Pin_LED_Write(0);
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    _Bool STATE=1;
    for(;;)
    {
      /* Place your application code here. */
      if(Pin_Key_Read()==0)
      {
            delay_ms(10);
            if(Pin_Key_Read()==0)
            {
                Pin_LED_Write(STATE);
                STATE=!STATE;
                while(Pin_Key_Read()==0){}
            }
      }
    }
}


编译下载,LED却常亮,按键无效???
仔细分析,忘了给按键加上拉,因为此时按键引脚位悬空状态。

研究了一下key中的函数,发现好像没有函数可以用于配置上拉模式,最后在原理图界面找到了。
双击Pin_Key,驱动模式Drive mode选择Open drain,drives high(需要取消HW connection勾选),初始状态选择High,如下图:


再次编译下测,测试OK。
没有录视频,两张测试图片如下:



页: [1]
查看完整版本: 【CY8CKIT-149 PSoC 4100S测评】+新建空白工程(以Key-LED为例)