1.综述:基于龙邱库函数
摄像头接口 龙邱神眼或者OV7725模块
● 数据端口:P02.0-P02.7口,共8位,接摄像头的数据端口;
● 时钟像素:外部中断第0组:P00_4;
● 场信号:外部中断第3组:P15_1;
编码器 推荐GPT12模块,共可以实现5路正交解码增量编码器(兼容带方向编码器)信号采集,任意选择四路即可;
P33_7, P33_6 龙邱TC母板编码器1
P02_8, P33_5 龙邱TC母板编码器2
P10_3, P10_1 龙邱TC母板编码器3
P20_3, P20_0 龙邱TC母板编码器4
电感电压采集模块或者麦克风模块
推荐使用AN0-7,共八路ADC,可以满足chirp声音信号及电磁车电感电压采集;
AN0-3 龙邱TC接四个麦克风模块或者电感
默认电机接口
使用GTM模块,ATOM四个通道可产生4*8共32路PWM,而且各自频率和占空比可调,推荐使用ATOM0的0-7通道;
第一组双路全桥驱动
P23_1 龙邱TC母板MOTOR1_P
P32_4 龙邱TC母板MOTOR1_N
P21_2 龙邱TC母板MOTOR2_P
P22_3 龙邱TC母板MOTOR2_N
第二组双路全桥驱动
P21_4 龙邱TC母板MOTOR3_P
P21_3 龙邱TC母板MOTOR3_N
P20_8 龙邱TC母板MOTOR4_P
P21_5 龙邱TC母板MOTOR4_N
默认舵机接口
使用GTM模块,ATOM四个通道可产生4*8共32路PWM,而且各自频率和占空比可调,推荐使用ATOM2;
P33_10 龙邱TC母板舵机1
P33_13 龙邱TC母板舵机2
默认屏幕显示接口,用户可以使用TFT或者OLED模块
TFTSPI_CS P20_14 龙邱TC母板 CS管脚 默认拉低,可以不用
TFTSPI_SCK P20_11 龙邱TC母板 SPI SCK管脚
TFTSPI_SDI P20_10 龙邱TC母板 SPI MOSI管脚
TFTSPI_DC P20_12 龙邱TC母板 D/C管脚
TFTSPI_RST P20_13 龙邱TC母板 RESET管脚
OLED_CK P20_14 龙邱TC母板OLED CK管脚
OLED_DI P20_11 龙邱TC母板OLED DI管脚
OLED_RST P20_10 龙邱TC母板OLED RST管脚
OLED_DC P20_12 龙邱TC母板OLED DC管脚
OLED_CS P20_13 龙邱TC母板OLED CS管脚 默认拉低,可以不用
默认按键接口
KEY0p P22_0 龙邱TC母板上按键0
KEY1p P22_1 龙邱TC母板上按键1
KEY2p P22_2 龙邱TC母板上按键2
DSW0p P33_9 龙邱TC母板上拨码开关0
DSW1p P33_11 龙邱TC母板上拨码开关1
默认LED接口
LED0p P10_6 龙邱TC母板核心板上LED0 翠绿
LED1p P10_5 龙邱TC母板核心板上LED1 蓝灯
LED2p P20_6 龙邱TC母板上LED0
LED3p P20_7 龙邱TC母板上LED1
默认蜂鸣器接口
BEEPp P33_8 龙邱TC母板上蜂鸣器接口
定时器
有两个CCU6模块 每个模块有两个独立定时器 触发定时器中断
推荐使用CCU6模块,STM用作系统时钟或者延时;
2.LED闪烁实现
#include <include.h>//各个模块的头文件
#include <IfxCpu.h>
#include <IfxScuCcu.h>
#include <IfxScuWdt.h>
#include <IfxStm.h>
#include <IfxStm_reg.h>
#include <LQ_CAMERA.h>
#include <LQ_CCU6.h>
#include <LQ_GPIO_KEY.h>
#include <LQ_GPIO_LED.h>
#include <LQ_MotorServo.h>
#include <LQ_SOFTI2C.h>
#include <LQ_TFT18.h>
#include <LQ_UART.h>
#include <LQ_Inductor.h>
#include <Main.h>
#include "LQ_ImageProcess.h"
App_Cpu0 g_AppCpu0; // brief CPU 0 global data
IfxCpu_mutexLock mutexCpu0InitIsOk = 1; // CPU0 初始化完成标志位
volatile char mutexCpu0TFTIsOk=0; // CPU1 0占用/1释放 TFT
/*************************************************************************
* 函数名称:int core0_main (void)
* 功能说明:CPU0主函数
* 参数说明:无
* 函数返回:无
* 修改时间:2020年3月10日
* 备 注:
*************************************************************************/
int core0_main (void)
{
//char txt[16];
// 关闭CPU总中断
IfxCpu_disableInterrupts();
// 关闭看门狗,如果不设置看门狗喂狗需要关闭
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());
// 读取总线频率
g_AppCpu0.info.pllFreq = IfxScuCcu_getPllFrequency();
g_AppCpu0.info.cpuFreq = IfxScuCcu_getCpuFrequency(IfxCpu_getCoreIndex());
g_AppCpu0.info.sysFreq = IfxScuCcu_getSpbFrequency();
g_AppCpu0.info.stmFreq = IfxStm_getFrequency(&MODULE_STM0);
// 按键初始化
GPIO_KEY_Init();
// LED灯所用P10.6和P10.5初始化
GPIO_LED_Init();
// 串口P14.0管脚输出,P14.1输入,波特率115200
UART_InitConfig(UART0_RX_P14_1,UART0_TX_P14_0, 115200);
// 开启CPU总中断
IfxCpu_enableInterrupts();
// 通知CPU1,CPU0初始化完成
IfxCpu_releaseMutex(&mutexCpu0InitIsOk);
// 切记CPU0,CPU1...不可以同时开启屏幕显示,否则冲突不显示
mutexCpu0TFTIsOk=0; // CPU1: 0占用/1释放 TFT
while (1) //主循环
{
LED_Ctrl(LEDALL,RVS); //电平翻转,LED闪烁
delayms(100);
}
}