mirror of
https://gitee.com/seekfree/TC264_Library.git
synced 2026-06-04 03:32:56 +00:00
优化延时函数为中断延时,关闭总中断则为普通延时
优化ips114屏幕的初始化时间,移除不必要的延时
修复串口错误中断的串口号异常的问题
追加更新:
新增逐飞助手组件支持
修复fifo高频读写的冲突问题
152 lines
7.4 KiB
C
152 lines
7.4 KiB
C
/*********************************************************************************************************************
|
||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||
*
|
||
* 本文件是 TC264 开源库的一部分
|
||
*
|
||
* TC264 开源库 是免费软件
|
||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||
*
|
||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||
* 更多细节请参见 GPL
|
||
*
|
||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||
*
|
||
* 额外注明:
|
||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||
*
|
||
* 文件名称 cpu0_main
|
||
* 公司名称 成都逐飞科技有限公司
|
||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||
* 开发环境 ADS v1.8.0
|
||
* 适用平台 TC264D
|
||
* 店铺链接 https://seekfree.taobao.com/
|
||
*
|
||
* 修改记录
|
||
* 日期 作者 备注
|
||
* 2022-09-15 pudding first version
|
||
********************************************************************************************************************/
|
||
|
||
#include "zf_common_headfile.h"
|
||
#include "isr_config.h"
|
||
#pragma section all "cpu0_dsram"
|
||
// 将本语句与#pragma section all restore语句之间的全局变量都放在CPU0的RAM中
|
||
|
||
// *************************** 例程硬件连接说明 ***************************
|
||
// 使用逐飞科技 英飞凌TriCore 调试下载器连接
|
||
// 直接将下载器正确连接在核心板的调试下载接口即可
|
||
// 使用 USB-TTL 模块连接
|
||
// 模块管脚 单片机管脚
|
||
// USB-TTL-RX 查看 zf_common_debug.h 文件中 DEBUG_UART_TX_PIN 宏定义的引脚 默认 P14_0
|
||
// USB-TTL-TX 查看 zf_common_debug.h 文件中 DEBUG_UART_RX_PIN 宏定义的引脚 默认 P14_1
|
||
// USB-TTL-GND 核心板电源地 GND
|
||
// USB-TTL-3V3 核心板 3V3 电源
|
||
|
||
//================================特别注意================================
|
||
// 串口接线时一定要接GND 否则无法正常通讯
|
||
//================================特别注意================================
|
||
//================================特别注意================================
|
||
// 串口接线时一定要接GND 否则无法正常通讯
|
||
//================================特别注意================================
|
||
//================================特别注意================================
|
||
// 串口接线时一定要接GND 否则无法正常通讯
|
||
//================================特别注意================================
|
||
|
||
// ***************************** 例程测试说明 *****************************
|
||
// 1.核心板烧录完成本例程,单独使用核心板与调试下载器或者 USB-TTL 模块,在断电情况下完成连接
|
||
// 2.将调试下载器或者 USB-TTL 模块连接电脑,完成上电
|
||
// 3.电脑上使用串口助手打开对应的串口,串口波特率为 DEBUG_UART_BAUDRATE 宏定义 默认 115200,核心板按下复位按键
|
||
// 4.可以在串口助手上看到如下串口信息:
|
||
// UART Text.
|
||
// 5.通过串口助手发送数据,会收到相同的反馈数据
|
||
// UART get data:.......
|
||
// 如果发现现象与说明严重不符 请参照本文件最下方 例程常见问题说明 进行排查
|
||
|
||
// ******************************* 代码区域 *******************************
|
||
#define UART_INDEX (DEBUG_UART_INDEX ) // 默认 UART_0
|
||
#define UART_BAUDRATE (DEBUG_UART_BAUDRATE) // 默认 115200
|
||
#define UART_TX_PIN (DEBUG_UART_TX_PIN ) // 默认 UART0_TX_P14_0
|
||
#define UART_RX_PIN (DEBUG_UART_RX_PIN ) // 默认 UART0_RX_P14_1
|
||
|
||
uint8 uart_get_data[64]; // 串口接收数据缓冲区
|
||
uint8 fifo_get_data[64]; // fifo 输出读出缓冲区
|
||
|
||
uint8 get_data = 0; // 接收数据变量
|
||
uint32 fifo_data_count = 0; // fifo 数据个数
|
||
|
||
fifo_obj_struct uart_data_fifo;
|
||
|
||
int core0_main(void)
|
||
{
|
||
clock_init(); // 获取时钟频率<务必保留>
|
||
debug_init(); // 初始化默认调试串口
|
||
// 此处编写用户代码 例如外设初始化代码等
|
||
|
||
fifo_init(&uart_data_fifo, FIFO_DATA_8BIT, uart_get_data, 64); // 初始化 fifo 挂载缓冲区
|
||
|
||
uart_init(UART_INDEX, UART_BAUDRATE, UART_TX_PIN, UART_RX_PIN); // 初始化串口
|
||
uart_rx_interrupt(UART_INDEX, 1); // 开启 UART_INDEX 的接收中断
|
||
|
||
uart_write_string(UART_INDEX, "UART Text."); // 输出测试信息
|
||
uart_write_byte(UART_INDEX, '\r'); // 输出回车
|
||
uart_write_byte(UART_INDEX, '\n'); // 输出换行
|
||
|
||
// 此处编写用户代码 例如外设初始化代码等
|
||
cpu_wait_event_ready(); // 等待所有核心初始化完毕
|
||
while (TRUE)
|
||
{
|
||
// 此处编写需要循环执行的代码
|
||
|
||
fifo_data_count = fifo_used(&uart_data_fifo); // 查看 fifo 是否有数据
|
||
if(fifo_data_count != 0) // 读取到数据了
|
||
{
|
||
fifo_read_buffer(&uart_data_fifo, fifo_get_data, &fifo_data_count, FIFO_READ_AND_CLEAN); // 将 fifo 中数据读出并清空 fifo 挂载的缓冲
|
||
uart_write_string(UART_INDEX, "\r\nUART get data:"); // 输出测试信息
|
||
uart_write_buffer(UART_INDEX, fifo_get_data, fifo_data_count); // 将读取到的数据发送出去
|
||
}
|
||
system_delay_ms(10);
|
||
|
||
// 此处编写需要循环执行的代码
|
||
}
|
||
}
|
||
|
||
//-------------------------------------------------------------------------------------------------------------------
|
||
// 函数简介 UART_INDEX 的接收中断处理函数 这个函数将在 UART_INDEX 对应的中断调用
|
||
// 参数说明 void
|
||
// 返回参数 void
|
||
// 使用示例 uart_rx_interrupt_handler();
|
||
//-------------------------------------------------------------------------------------------------------------------
|
||
void uart_rx_interrupt_handler (void)
|
||
{
|
||
// get_data = uart_read_byte(UART_INDEX); // 接收数据 while 等待式 不建议在中断使用
|
||
uart_query_byte(UART_INDEX, &get_data); // 接收数据 查询式 有数据会返回 TRUE 没有数据会返回 FALSE
|
||
fifo_write_buffer(&uart_data_fifo, &get_data, 1); // 将数据写入 fifo 中
|
||
}
|
||
|
||
|
||
IFX_INTERRUPT(uart0_rx_isr, 0, UART0_RX_INT_PRIO)
|
||
{
|
||
interrupt_global_enable(0); // 开启中断嵌套
|
||
|
||
uart_rx_interrupt_handler(); // 串口接收处理
|
||
}
|
||
|
||
|
||
#pragma section all restore
|
||
// ******************************* 代码区域 *******************************
|
||
|
||
// **************************** 例程常见问题说明 ****************************
|
||
// 遇到问题时请按照以下问题检查列表检查
|
||
// 问题1:串口没有数据
|
||
// 查看串口助手打开的是否是正确的串口,检查打开的 COM 口是否对应的是调试下载器或者 USB-TTL 模块的 COM 口
|
||
// 如果是使用逐飞科技 英飞凌TriCore 调试下载器连接,那么检查下载器线是否松动,检查核心板串口跳线是否已经焊接,串口跳线查看核心板原理图即可找到
|
||
// 如果是使用 USB-TTL 模块连接,那么检查连线是否正常是否松动,模块 TX 是否连接的核心板的 RX,模块 RX 是否连接的核心板的 TX
|
||
// 问题2:串口数据乱码
|
||
// 查看串口助手设置的波特率是否与程序设置一致,程序中 zf_common_debug.h 文件中 DEBUG_UART_BAUDRATE 宏定义为 debug uart 使用的串口波特率
|