当前位置: 首页 > news >正文

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);
http://www.jsqmd.com/news/99299/

相关文章:

  • Ollama量化让大模型在16GB内存设备高效运行
  • vue2和3分别如何在脚手架环境中设置环境变量?
  • Ubuntu下使用conda安装tensorflow-gpu避坑指南
  • HunyuanVideo-Foley:AI一键生成专业级视频音效
  • 小程序定制开发公司如何选择,贴合需求的定制服务商选择攻略微信小程序/寺庙小程序/活动小程序/电商小程序开发公司推荐 - 品牌2026
  • Kotaemon文档问答系统实战部署与功能解析
  • TensorFlow-GPU安装全指南:避坑与版本匹配
  • vLLM与TensorRT-LLM性能对比实测
  • Arduino结合YOLO实现边缘端智能视觉检测
  • Dify v0.6.9 源码部署与核心架构解析
  • 使用 Docker Compose 部署 LobeChat 服务端
  • 好写作AI|跨学科生存指南:你的AI伙伴如何切换“文科脑”与“理科魂”
  • Seed-Coder-8B-Base与Codex代码效率深度对比
  • Markdown文档自动化生成:基于TensorFlow+清华源的技术博客实践
  • kotaemon隐私保护:全本地化数据处理方案
  • JDK17神仙语法让代码优雅到飞起
  • C#实现人脸增强:基于GFPGAN的Facefusion第五步
  • Java垃圾收集器深度解析:CMS、G1与ZGC
  • 如何备份和迁移LobeChat的聊天记录与设置?
  • LobeChat能否对接企业微信/钉钉?组织内部部署案例
  • 全球USB厂商及设备ID详细列表
  • 好写作AI|从“学术裁缝”到“论文裁缝”:你的实战脱困升级指南
  • 好写作AI|你的“学术三头六臂”:会读文献、能理思路、善写文章的AI伙伴揭密
  • AutoGPT:让AI自主完成复杂任务
  • Linly-Talker:开源数字人能否挑战Synthesia?
  • SpringBoot整合MQTT多租户(优化版)
  • GPT-SoVITS语音驱动数字人 lipsync 同步技术
  • 解决langchain-chatchat因缺少__init__.py导致的模块导入错误
  • Dify智能体平台部署全攻略:快速搭建企业级AI应用
  • 好写作AI|你的“学术良知”与“技术外挂”能并存吗?——论负责任的研究与写作新姿势