如何使用PSOC Creator?
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?相关推荐
- Psoc Creator入门——EZI2C 通信
当初我用了两天的时间搞懂了赛普拉斯的Psoc 4000芯片作为iic从设备的通信,现在简单介绍一下怎么使用. 先说下我手上的开发套件,这是一块CY8CKIT-042的开发板和一个MiniProg3仿真 ...
- 我的PSoC学习(一)(PSoC Creator 2.0+win7+CY8C38):入门级别的五个工程
首先要保证Creator安装在纯英文目录下,不然程序会报错. 第一个工程就按照user guide里面一步一步走即可编译成功,硬件上注意: 1.关闭板上的电源. 2.配置DVK SW3 到 3.3 V ...
- Psoc Creator 入门——接近感应组件的使用
关于传感器的设计这里不做介绍,本文仅涉IDE的方面,哪天脑壳坏了再写一篇关于pcb设计的注意事项. 1.打开TopDesign.cysch文件,选择CapSense CSD[v2.50] 2.双击组件 ...
- 我的PSoC学习(三)(PSoC Creator 2.0+win7+CY8C38):Capsense滑条与温控系统PSoC编程需要注意的点
对于Capsense滑条控制灯的亮度,看懂了第五个例子之后,直接改,参考这里的理论知识,http://www.bubuko.com/infodetail-762337.html,就能大概知道滑条的工作 ...
- 2018.5.28 PSOC第一枪:基于cypress的蓝牙开发
Cypress-BLE 开发套件可以快速开发 物联网电子产品. PSOC编程特点: A 拖放各PSoC 组件到工作区中,以设计原理图 B 完成各组件之间的布线,并配置GPIO C 使用所包含的组件AP ...
- android studio 退出按钮,PSoC到Android Studio如何使用两个按钮关闭和打开LED
嗨,大家好, 我用PSoC创建者4和Android Studio制作了一个将PSoC设备连接到Android设备的BLE应用程序.我使用了如何创建一个PSoC Android BLE应用教程系列,HT ...
- PSoC Creater 安装教程
该软件安装过程比较简单,几乎全程无脑下一步即可. 1.点击安装包PSoCCreatorSetup_4.4_b80.exe 需要加载一会... 默认Typical,点击下一步next. 2.选择安装路径 ...
- BLE协议栈 – L2CAP
L2CAP(Logical Link Control and Adaptation Protocol)中文名为逻辑链路控制和适配协议,它位于BLE协议的主机(Host)部分,承担着协议复用(Proto ...
- 蓝牙协议栈(六、芯片组)
在本章中,我们首先解释蓝牙芯片组如何物理连接,然后提供有关流行的蓝牙芯片组及其与BTstack一起使用的信息. HCI接口 主机(计算机或MCU)与主机控制器(实际蓝牙芯片组)之间的通信遵循主机控制器 ...
最新文章
- mysql ibd文件还原_Mysql 通过ibd文件恢复数据
- JSP/Servlet实验室设备管理系统文档
- oracle cast multiset table 语法演示
- break、continue和return在程序中的作用
- 计算机发展与应用,网络计算机的发展与应用
- 检查Red Hat JBoss BRMS部署架构的规则和事件(第二部分)
- 技术:叫我怎么爱上你
- 电影整站程序 - webplayer9 p2p视频点播 - 电影整站系统 全部ASP源代码
- 《人工智能狂潮》读后感——什么是人工智能?(一)
- 均匀分布取某一点概率_统计概率思维
- 电子计算机的基本概念简述
- 远程控制android盒子,电视盒子ADB教程 通过ADB远程安装应用方法(2)
- 2022电工(初级)操作证考试题及模拟考试
- Android读书笔记(一)
- 【dva】dva使用与实现(四)
- sci计算机与教育,我院硕士研究生谢若鹏在SCI一区期刊发表高水平学术论文
- 关于树的最全知识就在这里了
- 为什么运动控制器比PLC好?
- 图书查重器 图书外采查重器 图书盘点机 图书采集器 老师的好帮手
- 智慧医院IT基础设施建设方案