完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我尝试使用 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]; /******************************************************************************* * Function 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 (;;) { } } /* [] 文件结尾 */ |
|
相关推荐
1个回答
|
|
1. 确保文件包含正确:首先,检查您的代码中的文件包含是否正确。从您提供的代码片段来看,有一些重复和不完整的包含语句。请确保您的代码中包含正确的头文件,例如: ```c #include "cyhal.h" #include "rtc.h" #include "cy_retarget_io.h" ``` 2. 检查文件处理函数:确保您已经实现了文件处理功能的相关函数,例如打开、读取、写入和关闭文件等。检查这些函数是否正确编写并被正确调用。 3. 检查错误处理:在文件处理过程中,确保您已经处理了可能发生的错误。例如,当打开文件失败时,您应该检查错误代码并采取相应的措施。 4. 检查硬件连接:确保您的 CYW920829M2EVK-02 开发板已正确连接到计算机,并且所有必要的驱动程序和软件都已安装。 5. 检查调试器设置:在 Eclipse IDE 中,检查您的调试器设置是否正确。确保您选择了正确的调试器配置,并正确连接到了开发板。 6. 设置断点和单步调试:在文件处理相关的代码行上设置断点,然后使用单步调试功能逐步执行代码。这将帮助您找到可能导致问题的具体代码行。 7. 查看调试输出:在 Eclipse IDE 的调试视图中,查看调试输出以获取有关程序执行的详细信息。这可能会帮助您找到问题所在。 8. 检查 ModusToolbox 版本:确保您使用的 ModusToolbox 版本与您的开发板和项目设置兼容。如果有更新,请尝试更新 ModusToolbox。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教个XMC1404调试串口接收时为什么一直无法接收数据的问题
372 浏览 0 评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6364 浏览 2 评论
4112 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3637 浏览 9 评论
1236 浏览 8 评论
466浏览 2评论
276浏览 2评论
384浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6364浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
468浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 16:05 , Processed in 0.770729 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号