我尝试使用 ModusToolbox 的 Eclipse IDE 在 CYW920829M2EVK-02 板上实现文件处理功能。 问题在于,即使命令没有错误且已编程。 文件处理功能未启动。 无法调试问题。 在主文件下方共享。
/*******************************************************************************
* Header Files
*******************************************************************************/
#include"cyhal.h"
#include"rtc.h"#include"cy_retarget_io.h"
#include
#include
#include
#include
#include
/*******************************************************************************
* Macros
*******************************************************************************/
// 输入数据比特大小
#define UART_BUFFER_SIZE 8
// 中断优先级
#define INT_PRIORITY 3
//最大字符长度
#define MAX_COMMAND_LENGTH 8
/*******************************************************************************
* 全局变量
*******************************************************************************/
FILE *file;
char filename[] ="ss.txt" ;
char buffer[100];
/*******************************************************************************
* Func
tion Prototypes
*******************************************************************************/
volatile uint8_t uart_buffer[UART_BUFFER_SIZE];
/*******************************************************************************
* 函数定义
*******************************************************************************/
void file_test()
{
// 创建一个新文件
if (strncmp((const char*)uart_buffer,"filecrte", UART_BUFFER_SIZE) == 0)
{
file = fopen("D:SRIJAN_2023-24TESTkaynes.txt" 、 "w");
if (file == NULL) {
printf("Error creating file!n");
return ;
}
fprintf(file,"This is a new file.n");
fclose(file);
}
else if (strncmp((const char*)uart_buffer,"fileread", UART_BUFFER_SIZE) == 0)
{
// 打开现有文件
file = fopen(filename,"r");
if (file == NULL) {
printf("Error opening file!n");
return ;
}
// 从文件中读取
fscanf(file,"%s", buffer); // 读取一个单词
printf("Read from file: %sn", buffer);
// 移动到文件中的特定位置
fseek(file, 0, SEEK_SET); // 移动到文件的开头
// 写入文件
fprintf(file,"This text will overwrite the previous content.n");
fclose(file);
}
else if (strncmp((const char*)uart_buffer,"fileedit", UART_BUFFER_SIZE) == 0)
{
// 再次打开文件进行追加
file = fopen(filename,"a");
if (file == NULL) {
printf("Error opening file!n");
return ;
}
fputs("This text will be appended.n" 、 file);
fclose(file);
// 打开文件供读取
file = fopen(filename,"r");
if (file == NULL) {
printf("Error opening file!n");
return ;
}
// 读取文件并打印每一行
printf("Contents of the file:n");
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}
fclose(file);
}
else
{
printf("Error process!rn");
}
}
void uart_event_handler(void* handler_arg, cyhal_uart_event_t event)
{
(void)handler_arg;
if ((event CYHAL_UART_IRQ_RX_DONE) == CYHAL_UART_IRQ_RX_DONE)
{
cyhal_uart_read_async( cy_retarget_io_uart_obj, uart_buffer, UART_BUFFER_SIZE);
file_test();
return ;
}
}
/*******************************************************************************
* 函数名称:main
********************************************************************************
* 摘要:
* 这是 CPU 的主函数。
它...
* 1.
* 2.
*
* 参数:
* void
*
* 返回:
* int
* *******************************************************************************/
int main(void)
{
cy_rslt_t result;
#if defined (CY_DEVICE_SECURE)
cyhal_wdt_t wdt_obj;
/* 清除看门狗定时器,使其不会触发重置 */
result = cyhal_wdt_init( wdt_obj, cyhal_wdt_get_max_timeout_ms());
CY_ASSERT(CY_RSLT_SUCCESS == result);
cyhal_wdt_free( wdt_obj);
#endif
/* 初始化设备和
电路板外设 */
result = cybsp_init();
/* 电路板启动失败。 停止程序执行 */
if (result != CY_RSLT_SUCCESS)
{
CY_ASSERT(0);
}
/* 启用全局中断 */
__enable_irq();
/* 初始化 retarget-io 以使用调试 UART 端口 */
result = cy_retarget_io_init_fc(CYBSP_DEBUG_UART_TX,
CYBSP_DEBUG_UART_RX,
CYBSP_DEBUG_UART_CTS,
CYBSP_DEBUG_UART_RTS,
CY_RETARGET_IO_BAUDRATE);
/* retarget-io 启动失败。 停止程序执行 */
if (result != CY_RSLT_SUCCESS) {
CY_ASSERT(0);
}
// UART 回调处理程序注册
if (CY_RSLT_SUCCESS == result)
{
cyhal_uart_register_callback( cy_retarget_io_uart_obj, uart_event_handler, NULL);
// 启用所需的 UART 事件
cyhal_uart_enable_event( cy_retarget_io_uart_obj,
(cyhal_uart_event_t)(CYHAL_UART_IRQ_TX_DONE |
CYHAL_UART_IRQ_TX_ERROR |
CYHAL_UART_IRQ_RX_DONE),
INT_PRIORITY, true);
// 开始异步 RX 传输
result = cyhal_uart_read_async( cy_retarget_io_uart_obj, (void*)uart_buffer, UART_BUFFER_SIZE);
}
返回结果;
for (;;)
{
}
}
/* [] 文件结尾 */