news 2026/8/23 19:25:45

vscode与keil的一些问题解决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vscode与keil的一些问题解决

目录

解决:无构建目标或目标与项目不匹配

如何在vscode中添加文件,无须每次到keil中添加?

如何在vscode直接定义 (keil中定义的) 宏

解决vscode中 `USART1_IRQn` 报红 (仅针对STM32F103C8T6,其他型号可能是STM32Fxxx_MD)

Keil 烧录结果需要下一次才能执行:勾选 Use MicroLIB

Keil 烧录和Reset and Run 不起作用

USART 莫名其妙打印问号 `?` 或者 00 (针对STM32F103C8T6)

bootloader跳转A区时,A区打印问号`?`


解决:无构建目标或目标与项目不匹配

解决方法
方法1. 重启vscode

方法2.重新选择一下目标文件(无须重启vscode)

其他问题,

如何在vscode中添加文件,无须每次到keil中添加?

找到.....uvprojx文件,crtl+F:Groups,按照红框的格式增加你需要添加的文件就行,然后重新选择一下目标文件

如何在vscode直接定义 (keil中定义的) 宏

找到.....uvprojx文件,crtl+F:Define,

解决vscode中 `USART1_IRQn` 报红 (仅针对STM32F103C8T6,其他型号可能是STM32Fxxx_MD)


在 `Project.uvprojx` 里搜索 `Define`,然后添加宏 `STM32F10X_MD`

Keil 烧录结果需要下一次才能执行:勾选 Use MicroLIB

Keil 烧录和Reset and Run 不起作用

Keil Reset and Run 不起作用,debug:取消勾选ST-Link 的 pack->Enable

USART 莫名其妙打印问号 `?` 或者 00 (针对STM32F103C8T6)

解决方案,先 `USART_Init()`,再 `GPIO_Init()`

if (USARTx == USART1) RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); else if (USARTx == USART2) RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); else if (USARTx == USART3) RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); USART_InitTypeDef USART_InitStruct = {0}; USART_InitStruct.USART_BaudRate = 115200; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_Init(USARTx, &USART_InitStruct); // 先USART_Init再GPIO_Init, if (GPIOx_USART == GPIOA) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); else if (GPIOx_USART == GPIOB) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); else if (GPIOx_USART == GPIOC) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin = USARTTx; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOx_USART, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStruct.GPIO_Pin = USARTRx; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOx_USART, &GPIO_InitStruct); USART_Cmd(USARTx,ENABLE);// 最后

解释:

如果先初始化 GPIO,此时:
- `USART_Init` 还没执行
- TX 引脚切换到 AF_PP 后,其默认输出值 **不由 USART 控制**,而由 GPIO AF 配置逻辑初始值决定

TX 引脚在 GPIO 初始化过程中产生的低电平毛刺被对端串口误判为一个字节,为什么只有 TX(发送脚)会触发这个问题,TX 在 UART 空闲状态下应保持高电平。但在配置 AF_PP 之前或期间,TX 可能:
- 被 GPIO 默认驱成低电平
- 或进入 Hi-Z 后又被上下拉影响
- 或被 ST 的复用层逻辑短暂接管
任何**低电平持续超过 1/16 bit 时间**,上位机都会识别成 UART Start Bit。

然后初始化 USART,后面立即恢复高电平(因为 TX 默认空闲为高) → 8 个采样点都是高,然后帧内其他 8 bit 都是高电平,于是得到:`0000 0000`,输出`?`

bootloader跳转A区时,A区打印问号`?`

在跳转A区前:

// TC:Transmit Complete-发送完成,当TDR空且移位寄存器空时 while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 16:22:54

vLLM与TensorRT-LLM性能对比实测

vLLM 与 TensorRT-LLM 性能对比实测 在大模型落地加速的今天,推理效率已成为决定服务成本和用户体验的核心瓶颈。面对日益增长的生成式 AI 需求,如何在有限算力下最大化吞吐、降低延迟?vLLM 和 TensorRT-LLM 作为当前最主流的两大推理框架&am…

作者头像 李华
网站建设 2026/8/23 20:24:03

kotaemon隐私保护:全本地化数据处理方案

Kotaemon隐私保护:全本地化数据处理方案 在金融、医疗和法律等行业,AI系统的每一次“智能响应”背后,都可能潜藏着敏感数据泄露的风险。当企业试图部署一个智能问答助手来提升效率时,最令人不安的问题往往是:我的数据会…

作者头像 李华
网站建设 2026/8/24 11:22:42

如何用LobeChat免费使用DeepSeek大模型

如何用 LobeChat 免费使用 DeepSeek 大模型 你有没有发现,最近朋友圈里讨论 AI 的人越来越多?不只是技术圈在聊,连做设计、写文案、搞教育的朋友也开始用上了自己的“AI 助手”。而在这股浪潮中,DeepSeek 正悄然成为国产大模型中…

作者头像 李华
网站建设 2026/8/24 13:36:08

好写作AI|搞定论文“门面担当”:你的图表会说话,排版零错误

图表说明只会写“如图1所示”?排版改到怀疑人生?你的“学术美化师”已接管战场!各位为论文“颜值”和细节操碎了心的伙伴,是否经历过:精心制作的图表,配文却苍白无力;全文内容过关,却…

作者头像 李华
网站建设 2026/8/24 14:06:17

FaceFusion生产环境部署与运维全指南

FaceFusion生产环境部署与运维全指南 在AI生成内容席卷影视、直播和短视频行业的今天,人脸替换技术早已不再是实验室里的“玩具”。无论是虚拟偶像的实时换脸,还是影视剧中的数字替身,FaceFusion 凭借其高精度、低延迟和模块化设计&#xff…

作者头像 李华
网站建设 2026/8/23 20:45:10

Qwen3-VL-8B部署排错全指南

Qwen3-VL-8B部署排错全指南 在AI从“能看懂字”进化到“能看懂图”的今天,多模态模型正成为智能系统的标配能力。而如果你正在寻找一个轻量、高效、易集成的视觉语言模型来为产品赋能,那 Qwen3-VL-8B 绝对是你的入门首选。 这不仅是一个“参数80亿”的数…

作者头像 李华