完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、SEGGER-Jlink 时无法打断点
我在配置好JTAG后,将程序下载到RAM中后可以运行,但无法打断点和暂停。我是用的SDK包时1.3.5,基于cycx3_uvc_ov5640工程进行的修改。 2、我基于cyfxuartlpregmode工程在cycx3_uvc_ov5640中创建了串收发,主要配置代码如下 CyU3PReturnStatus_t SNPrint( uint8_t *debugMsg, uint16_t *长度, 煳涂 *信息, va_list argp); SHELL_TypeDef shell; uint8_t print_buf[100]; void CyU3PUartintrCb( CyU3PUartEvt_t evt, CyU3PUartError_t 错误) { uint8_t 数据; CyU3PReturnStatus_t 状态; uint32_t 计数; 如果(evt == cy_u3p_uart_event_rx_data) { 做{ 计数 = CyU3PUartReceiveBytes( 数据, 1, 状态); 如果(count!=0){ UartDataBuffer[UartDataWrPtr] = 数据; UartDataWrPtr++; 如果(UartDataWrPtr == cy_fx_uartlt_buf_size) UartDataWrPtr = 0; UartDataCount++; } }而(count !=0); // data=((uint8_t)(UART->lpp_uart_ingress_data)); CyU3PEventSet( UartEvent, Uart_receive_data_evt, cyu3p_event_or); } 如果(cy_u3p_uart_event_error == evt) { CyU3PEventSet( UartEvent, UART_ERROR_EVT, cyu3p_event_or); } } void send_char((......) char data) { CyU3PReturnStatus_t stat; CyU3PUartTransmitBytes((uint8_t *) 数据,1, 统计); } void uart_init(void) { CyU3PUartConfig_t uartConfig={0}; CyU3PReturnStatus_t 状态; // CyU3PUartDeInit(); // CyU3PThreadSleep(1); 状态 = CyU3PUartInit(); 如果(status != CY_U3P_SUCCESS) { 返回; } /* 设置 UART 配置 */ uartConfig.波特率 = CY_U3P_UART_BAUDRATE_115200; uartConfig.stopBit = cy_u3p_uart_one_stop_bit; uartConfig.奇偶校验 = cy_u3p_uart_no_parity; uartConfig.txEnable = cyTrue; uartConfig.rxEnable = CyTrue; uartConfig.flowCtrl = CyFalse; uartConfig.isDma = CyFalse; 状态 = CyU3PUartSetConfig( uartConfig, CyU3PUartIntrCb); 如果(status != CY_U3P_SUCCESS) { /* 错误处理 */ 返回; } } 空虚 UartThread_Entry( uint32_t 输入) { CyU3PReturnStatus_t 状态 = CY_U3P_SUCCESS; uint32_t evStat; uint16_t cnt=0; UartDataBuffer =(uint8_t *)CyU3PDmaBufferAlloc(cy_fx_uartlt_buf_size); 如果(UartDataBuffer == 0) CyCx3AppErrorHandler(cy_u3p_error_memory_error); UartDataCount = 0; UartDataWrPtr = 0; UartDataRdPtr = 0; uart_init(); CyU3PUartSetTimeout(1, 50000); 外壳.写入=发送字符; shellInit( shell); debug_print("shell init okrn"); // uart_reg_print(); 虽然(1) { CyU3PThreadSleep(1); 状态 = CyU3PEventGet( UartEvent, Uart_receive_data_evt, cyu3p_event_or_clear、 evStat,cyu3p_no_wait); 如果(status == CY_U3P_SUCCESS) { 虽然(UartDataCount > 0){ shellInput( shell, UartDataBuffer[UartDataRdPtr]); // CyU3PUartTransmitBytes (UartDataBuffer + UartDataRdPtr, 1, status); 如果(status == CY_U3P_SUCCESS){ UartDataRdPtr++; 如果(UartDataRdPtr == cy_fx_uartlt_buf_size) UartDataRdPtr = 0; UartDataCount--; } } } cnt++; 如果(cnt==10000){ cnt=0; uart_reg_print(); } } } uint8_t create_uart_thread(void) { 空白 *ptr = 无效; uint32_t ret = CY_U3P_SUCCESS; 保留 = CyU3PEventCreate( UartEvent); 如果(ret != CY_U3P_SUCCESS) 返回 1; ptr = CyU3PMemAlloc(cy_fx_uartlp_thread_stack); 如果(ptr == 0) 返回 2; 保留 = CyU3PThreadCreate( UartThread, /* UART 示例应用程序线程结构 */ "UART_register_mode", /* 线程 ID 和线程名称 */ UartThread_Entry, /* UART 示例应用程序线程入口函数 */ 0, /* 线程无输入参数 */ ptr, /* 已分配线程栈的指针 */ cy_fx_uartlp_thread_stack, /* UART 示例应用程序线程堆栈大小 */ cy_fx_uartlp_thread_priority, /* UART 示例应用程序线程优先级 */ cy_fx_uartlp_thread_priority, /* UART 示例应用程序线程优先级 */ cyu3p_no_time_slice、 /* 应用线程无时间片 */ cyu3p_auto_start /* 立即启动线程 */ ); 如果(ret == CY_U3P_SUCCESS) 返回 0; 返回 0; } void uart_reg_print(void) { 为(uint8_t i=0;i<8;i++){ debug_print("UART reg_addr0x%x= 0x%x/rn",UART_BASE_ADDR+i*4,*((uint32_t *)(UART_BASE_ADDR+i*4))); } debug_print("UART reg_addr0x%x= 0x%x/rn", UART->lpp_uart_id,UART->lpp_uart_id); debug_print("UART reg_addr0x%x= 0x%x/rn", UART->lpp_uart_power,UART->lpp_uart_power); debug_print("---------------------rn"); } 目前我测下来不开启usb相关功能时可以正常的进行收发,但当开启usb相关功能后就无法进行收发,我是通过注释的 CyU3PUsbStart()函数发现的。 |
|
相关推荐
1个回答
|
|
问题1:SEGGER-Jlink 时无法打断点
可能的原因及解决方案: 1. 检查JTAG配置是否正确。确保您已正确设置JTAG接口,包括时钟频率和电压等。 2. 确保您的SEGGER-Jlink驱动程序已正确安装并更新到最新版本。 3. 检查您的IDE(如Keil、IAR等)是否支持SEGGER-Jlink。如果不支持,您可能需要更换IDE或使用其他调试器。 4. 确保您的代码已正确编译并生成了调试信息。如果没有调试信息,IDE将无法设置断点。 5. 尝试重置Jlink并重新连接设备。有时候,重新连接设备可以解决一些连接问题。 问题2:UART在CyU3PUsbStart执行后就无法正常运行 可能的原因及解决方案: 1. 检查您的UART配置是否正确。确保波特率、数据位、停止位和奇偶校验位等设置正确。 2. 确保您的代码在CyU3PUsbStart执行之前已经初始化了UART。如果UART在USB启动之前没有正确初始化,它可能无法正常工作。 3. 检查您的代码是否正确处理了UART中断。如果中断处理不当,可能会导致UART无法正常工作。 4. 检查您的硬件连接是否正确。确保UART引脚连接正确,并且没有短路或接触不良的问题。 5. 尝试使用其他串口调试工具(如PuTTY、Tera Term等)来测试UART通信。这可以帮助您确定问题是否出在软件还是硬件上。 |
|
|
|
只有小组成员才能发言,加入小组>>
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
5362 浏览 2 评论
4071 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3588 浏览 9 评论
1203 浏览 8 评论
3491 浏览 7 评论
409浏览 2评论
241浏览 2评论
350浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
5374浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
411浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 23:24 , Processed in 0.684051 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号