PSOC creator最重要的几步:

1)原理图里放置代码中要用到的控件,可以说这是核心,后面设计都会围绕这个展开。也就是需求是什么,用哪种操作实现什么动作,拖拉几个控件然后生成API和头文件定义等,然后编码实现中断等流程即可。比如一个中断点亮一个LED,那么就把中断和LED两个组件拉入到原理图中进行设置。不同的芯片chip有不同的控件,但是该工具主要适用PSOC4,PSOC4的资源组件相对丰富,而PSOC6则需要到一个新的开发IDE Modus ToolBox这个工具中去使用,比如IOT类的:wifi-Ble相关的资源比较丰富。

2)原理图用到的组件,如接口通信类:UART、I2C、SPI、PWM等,Glboal Signal、interrupt等,有些接口类需要在Design-wide Resource中对应到芯片的Port引脚上去,这是硬件连接。然后generate API,会根据原理图和设计范围资源生成一堆自动生成的代码和API,后续设计直接调用,和1一样直接关注应用的需求即可。

3) source code,对应需求增加相应的代码,比如初始化哪些,启动哪些,中断服务程序isr做了些什么事情,都在这里实现。PSOC4主要是单核Arm® Cortex®-M0 CPU,所以主要就是main函数里,for循环,外围中断处理。PSOC4有几类cypress的产品,如usb typeC类的(CYPD3、4、5、6)、CapSense电容触摸传感器类、通用MCU类的。

如实现一个看门狗计时器uart输出的程序,原理图如上,源码如下:

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

/*******************************************************************************
*            Constants
*******************************************************************************/
#define interruptNumWDT 9

/*******************************************************************************
*            Global variables
*******************************************************************************/
char snum[32]; // Used for sprintf conversion
uint8 currentStatus;

/***************************************************************************//**
* Function Name: ISR_WatchDog
********************************************************************************
*
* Summary:
* This function sets a flag to the background process, and clears the interrupt
* source so that the interrupt can occur again.
*
* Parameters:
*  None
*
* Return:
*  None
*
*******************************************************************************/
CY_ISR(ISR_WatchDog)
{
    /* Sets flag for printing the current count status of the Watchdog Timer */
    currentStatus = 1u;
    
    /* Clear interrupts state and pending interrupts */
    CySysWdtClearInterrupt(CY_SYS_WDT_COUNTER0_INT);
    CyIntClearPending(interruptNumWDT);
}

/*******************************************************************************
* Function Name: main
********************************************************************************
*
*  The main function performs the following actions:
*   1. Displays the cause/source of reset: either WDT or power up / reset button.
*   2. Interrupt number and handler are initialized.
*   3. WDT counter 0 and 1 are set up to generate interrupts and resets properly.
*   4. Both WDT counters are enabled.
*   5. Count is kept track through the interrupt and displayed through UART.
*
*******************************************************************************/
int main(void)
{
    /* Cause of reset flag */
    uint8 resetSource = *(reg32 *)CYREG_RES_CAUSE;

/* Start UART operation */
    UART_Start();
    
    /* On reset, the source is printed */
    UART_UartPutString("\r\nCause of reset: ");
    
    if (0u == resetSource) /* Source is initial power or reset */
    {
        UART_UartPutString("Power up or Reset button pressed\r\n");
    }
    else /* Source is Watchdog Timer */
    {   
        UART_UartPutString("Watchdog Timer");
    }
    
    /* Sets interrupt handler for WDT and enables interrupt number */
    CyIntSetVector(interruptNumWDT, ISR_WatchDog);
    CyIntEnable(interruptNumWDT);
    
    /* Enabling global interrupts */
    CyGlobalIntEnable;
    
    /* Set the first WDT counter to generate interrupt on match */
    CySysWdtWriteMode(CY_SYS_WDT_COUNTER0, CY_SYS_WDT_MODE_INT);
    CySysWdtWriteMatch(CY_SYS_WDT_COUNTER0, 0x5000);
    
    /* Counter 0 is cleared when there is match */
    CySysWdtWriteClearOnMatch(CY_SYS_WDT_COUNTER0, 1u);
    
    /* Enable WDT conters 0 and 1 cascade */
    CySysWdtWriteCascade(CY_SYS_WDT_CASCADE_01);
    
    /* Set the second WDT counter to generate reset on match */
    CySysWdtWriteMode(CY_SYS_WDT_COUNTER1, CY_SYS_WDT_MODE_RESET);
    CySysWdtWriteMatch(CY_SYS_WDT_COUNTER1, 0x0009);
    
     /* Counter 1 is cleared when there is match */
    CySysWdtWriteClearOnMatch(CY_SYS_WDT_COUNTER1, 1u);
    
    /* Counter 0 and Counter 1 are enabled */
    CySysWdtEnable(CY_SYS_WDT_COUNTER0_MASK | CY_SYS_WDT_COUNTER1_MASK);
    
    UART_UartPutString("\r\nTimer 1 Count: ");
    
    /* Initialize current status flag */
    currentStatus = 0u;
    
    for(;;)
    {
        /* Print current count status of the Watchdog Timer if flag is set to 1 */
        if(currentStatus != 0)
        {
            sprintf(snum, "%lu" ,CySysWdtReadCount(1u));
            UART_UartPutString(snum);
            currentStatus = 0u;
        }
    }
}

/* [] END OF FILE */

如何使用PSOC Creator?相关推荐

  1. Psoc Creator入门——EZI2C 通信

    当初我用了两天的时间搞懂了赛普拉斯的Psoc 4000芯片作为iic从设备的通信,现在简单介绍一下怎么使用. 先说下我手上的开发套件,这是一块CY8CKIT-042的开发板和一个MiniProg3仿真 ...

  2. 我的PSoC学习(一)(PSoC Creator 2.0+win7+CY8C38):入门级别的五个工程

    首先要保证Creator安装在纯英文目录下,不然程序会报错. 第一个工程就按照user guide里面一步一步走即可编译成功,硬件上注意: 1.关闭板上的电源. 2.配置DVK SW3 到 3.3 V ...

  3. Psoc Creator 入门——接近感应组件的使用

    关于传感器的设计这里不做介绍,本文仅涉IDE的方面,哪天脑壳坏了再写一篇关于pcb设计的注意事项. 1.打开TopDesign.cysch文件,选择CapSense CSD[v2.50] 2.双击组件 ...

  4. 我的PSoC学习(三)(PSoC Creator 2.0+win7+CY8C38):Capsense滑条与温控系统PSoC编程需要注意的点

    对于Capsense滑条控制灯的亮度,看懂了第五个例子之后,直接改,参考这里的理论知识,http://www.bubuko.com/infodetail-762337.html,就能大概知道滑条的工作 ...

  5. 2018.5.28 PSOC第一枪:基于cypress的蓝牙开发

    Cypress-BLE 开发套件可以快速开发 物联网电子产品. PSOC编程特点: A 拖放各PSoC 组件到工作区中,以设计原理图 B 完成各组件之间的布线,并配置GPIO C 使用所包含的组件AP ...

  6. android studio 退出按钮,PSoC到Android Studio如何使用两个按钮关闭和打开LED

    嗨,大家好, 我用PSoC创建者4和Android Studio制作了一个将PSoC设备连接到Android设备的BLE应用程序.我使用了如何创建一个PSoC Android BLE应用教程系列,HT ...

  7. PSoC Creater 安装教程

    该软件安装过程比较简单,几乎全程无脑下一步即可. 1.点击安装包PSoCCreatorSetup_4.4_b80.exe 需要加载一会... 默认Typical,点击下一步next. 2.选择安装路径 ...

  8. BLE协议栈 – L2CAP

    L2CAP(Logical Link Control and Adaptation Protocol)中文名为逻辑链路控制和适配协议,它位于BLE协议的主机(Host)部分,承担着协议复用(Proto ...

  9. 蓝牙协议栈(六、芯片组)

    在本章中,我们首先解释蓝牙芯片组如何物理连接,然后提供有关流行的蓝牙芯片组及其与BTstack一起使用的信息. HCI接口 主机(计算机或MCU)与主机控制器(实际蓝牙芯片组)之间的通信遵循主机控制器 ...

最新文章

  1. mysql ibd文件还原_Mysql 通过ibd文件恢复数据
  2. JSP/Servlet实验室设备管理系统文档
  3. oracle cast multiset table 语法演示
  4. break、continue和return在程序中的作用
  5. 计算机发展与应用,网络计算机的发展与应用
  6. 检查Red Hat JBoss BRMS部署架构的规则和事件(第二部分)
  7. 技术:叫我怎么爱上你
  8. 电影整站程序 - webplayer9 p2p视频点播 - 电影整站系统 全部ASP源代码
  9. 《人工智能狂潮》读后感——什么是人工智能?(一)
  10. 均匀分布取某一点概率_统计概率思维
  11. 电子计算机的基本概念简述
  12. 远程控制android盒子,电视盒子ADB教程 通过ADB远程安装应用方法(2)
  13. 2022电工(初级)操作证考试题及模拟考试
  14. Android读书笔记(一)
  15. 【dva】dva使用与实现(四)
  16. sci计算机与教育,我院硕士研究生谢若鹏在SCI一区期刊发表高水平学术论文
  17. 关于树的最全知识就在这里了
  18. 为什么运动控制器比PLC好?
  19. 图书查重器 图书外采查重器 图书盘点机 图书采集器 老师的好帮手
  20. 智慧医院IT基础设施建设方案

热门文章

  1. Windows多次复制粘贴快捷键
  2. 关于机器学习预测,我的训练集R方可以达到0.9以上,但是测试集R方只能0.2左右,而且不是过拟合,各种调参之后测试集R方最高只能到这个水平,请问这种是什么原因
  3. uni-app 国际化
  4. 2022中国高级人才管理实践白皮书
  5. Git、Maven 面试题
  6. Qt creator在发布程序时提示0xc000007b
  7. Spring Boot:使用p6spy监控数据库操作
  8. 【树莓派】使用树莓派4B搭建简单的局域网Nas
  9. CTF题目记录2(图片隐写)
  10. kubeadm部署Kubernetes(k8s)完整版详细教程