windows 10 系统 vs code 编译运行和调试 C/C++

本文详细介绍了如何在Windows 10上使用VSCode进行C/C++开发,包括安装MinGW-w64环境,设置VSCode及插件,如C/C++、C/C++ Compile Run,解决中文乱码问题,并提供了调试C/C++代码的步骤,确保从安装到调试的全过程顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章

知乎:windows 10上使用vscode编译运行和调试C/C++

vscode下c/c++的运行和调试配置

安装C/C++环境:MinGW-w64

VS Code本质上只是一个编辑器,和记事本一个性质。所以要想运行C/C++代码,需要安装MinGW-w64。点击下载地址】会看到多种安装方式,推荐下图指示的两种方式,但exe安装经常出错,所以推荐下载压缩包。
在这里插入图片描述

2024/10/04:原网站这个界面已经没了,相应的链接在这:

MinGW-W64 Online Installer
====================
* `MinGW-W64-install.exe <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe>`_

MinGW-W64 GCC-8.1.0
====================
* `x86_64-posix-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z>`_
* `x86_64-posix-seh <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z>`_
* `x86_64-win32-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-win32/sjlj/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z>`_
* `x86_64-win32-seh <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-win32/seh/x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z>`_
* `i686-posix-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/i686-8.1.0-release-posix-sjlj-rt_v6-rev0.7z>`_
* `i686-posix-dwarf <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/dwarf/i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z>`_
* `i686-win32-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-win32/sjlj/i686-8.1.0-release-win32-sjlj-rt_v6-rev0.7z>`_
* `i686-win32-dwarf <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-win32/dwarf/i686-8.1.0-release-win32-dwarf-rt_v6-rev0.7z>`_

下载压缩包,解压后放到任意位置,例如我放在C:\Program Files\mingw64

然后,要将这个路径下的"/bin"文件夹添加到环境变量中,打开设置 ⇒ 系统⇒ 关于(在最下面),按下图指示操作
在这里插入图片描述
打开cmd终端,输入gcc -v能够输出版本号,则证明安装成功!

安装VS Code以及配置插件

1. 安装VS Code

进入VS Code官网选择windows版本下载,双击安装即可。

2. 安装拓展插件

1. Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code

首次打开VS Code会提示安装此插件。如果英文比较好,可以不安装。

2. C/C++

可以识别出C/C++代码,支持调试功能。按Alt+Shift+F组合键可以格式化代码。

3. C/C++ Compile Run

一个专门用于编译运行、调试C/C++代码的插件。

打开.c或.cpp文件,按F6即可运行代码,运行结果显示在下方的终端区域。

如果需要像DEV、Codeblocks那样以小黑窗的形式显示运行结果,请点击【文件】⇒ 【首选项】⇒ 【设置】
在这里插入图片描述

4. Code Runner(不推荐)

该插件 和 3. C/C++ Compile Run 二选一。

这个插件是很多教程里提到的代码运行插件,不仅能运行C/C++。但是经过尝试,我发现它对C/C++并不友好,比如默认运行结果无法执行输入(如scanf函数会卡住),只能修改设置为以终端运行。还有一些其他问题。

# 已安装插件截图

在这里插入图片描述

调试C/C++代码

  1. 打开需要调试的C/C++代码文件。
  2. 设置断点
    点击行数稍左一点的位置,会出现红点,即调试断点(调试时会在此行暂停)。右键点击红点 ⇒ 编辑断点,可以设置表达式(满足某条件时暂停)、命中次数(执行多少次之后暂停)等。
  3. 开始调试
    按F5键,弹出选择环境选项时选【C++(GDB/LLDB)】,随后弹出选择配置选项时选【g++.exe -生成和调试活动文件】。
    随后会自动在.vscode文件夹下产生两个文件launch.jsontasks.json,无需修改。
  4. 调试中
    开始调试后,将会在运行到断点时暂停,并在左侧调试窗口显示变量、堆栈使用情况等。
    VS Code启动了一个终端来显示调试过程中的输出。
    屏幕上方会出现调试工具条,如下图
    在这里插入图片描述
    调试工具条的6个按钮的功能分别是
    • 继续/暂停;在断点暂停时,点一下就会继续向下运行。
    • 单步跳过;执行一行,调到下一行暂停。
    • 单步调试;也是执行一句,但如果该句是调用了一个函数,则会跳转到函数内部去一行一行的执行。
    • 单步跳出;与单步调试相反,跳出正在执行的函数体,如果是在main函数,点一下就直接运行到结束。
    • 重启;也就是重新从头开始调试。
    • 停止;结束调试。

中文乱码问题

VS Code默认文件编码时UTF-8,这对大多数情况是没有问题的,却偏偏对C/C++有问题。如果以UTF-8编码保存C/C++代码,那么只能输出英文,另外使用不同的编辑器打开改代码时,中文注释也可能会乱码。

解决方法

打开VS Code,文件 ⇒ 首选项 ⇒ 设置,点击右侧图标,打开setting.json

setting.json中添加两项

   "[cpp]": {
        "files.encoding": "gbk"
    },
    "[c]": {
        "files.encoding": "gbk"
    }

在这里插入图片描述
以后新建.c 或 .cpp文件时,将默认为GBK编码,中文不会乱码了。对于已经存在的文件,可以在编辑窗口点击右下角的编码切换为GBK(如下图)。
在这里插入图片描述

参考:解决VS Code编辑运行C/C++代码文件中文乱码问题;修改编码为GBK

<think>好的,用户想用VS CodeTuya Wind IDE插件为TLSR8250蓝牙芯片配置C0引脚作为UART发送,A1作为接收,并配置一个微秒级的定时器,需要提供详细的C代码示例注释。首先,我需要回忆一下TLSR8250的文档,特别是关于UART定时器的部分。 首先,关于UART配置,TLSR8250的引脚复用功能需要正确设置。C0作为TX,A1作为RX,可能需要查找对应的GPIO模式复用功能设置。记得泰凌微的芯片通常有GPIO初始化函数,可能需要设置引脚为UART功能,并配置UART参数,比如波特率、数据位、停止位等。 然后是定时器配置,用户需要的是us级别的定时器。TLSR8250的定时器可能有多个,比如Timer0到Timer3,不同定时器的时钟源精度可能不同。微秒级定时器可能需要使用更高频率的时钟源,比如48MHz或者PCLK分频后的时钟。需要设置定时器的预分频计数值,并确保中断处理函数正确。 接下来是代码结构。通常,泰凌微的SDK会有外设初始化的函数,比如uart_init、timer_init等。需要包含相应的头文件,比如"uart.h""timer.h"。在main函数中初始化这些外设,并可能进入一个循环等待事件。 需要注意Tuya Wind IDE插件的特定配置,比如项目设置中的芯片型号是否正确,是否启用了UART定时器的相关驱动。可能还需要在工程配置文件中添加对应的模块,或者在makefile里链接相应的库。 然后检查用户提供的引用内容,引用3中的I2C初始化代码,可能可以参考其外设初始化的结构,比如先调用ty_i2c_init(),再设置设备地址。同样,UART初始化可能需要类似的步骤:初始化UART外设,设置引脚,配置参数。 关于定时器的部分,用户需要us级定时,可能需要使用硬件定时器,并设置合适的分频系数。比如,如果系统时钟是48MHz,分频到1MHz,这样每个计数就是1us。定时器中断服务函数中需要处理定时事件,并重新加载计数值。 另外,用户提到使用Tuya的SDK,可能需要调用涂鸦提供的API来配置外设,比如uart_driver_init之类的函数。需要查阅TLSR8250的涂鸦SDK文档,确认正确的函数参数。 最后,代码示例需要详细的注释,解释每一步的作用,比如设置引脚功能、配置UART参数、定时器参数,以及中断处理流程。还要确保代码结构清晰,包含必要的头文件main函数结构。 可能遇到的问题包括:引脚复用功能是否正确,定时器的精度是否足够,中断优先级设置是否合理,以及UART的数据收发是否正常。需要测试代码,确保没有语法错误,并且功能符合预期。 总结步骤:配置UART引脚参数,初始化UART,配置定时器参数中断,编写中断服务函数,主循环处理其他任务。同时,提供Tuya Wind IDE的项目配置建议,确保编译下载顺利。</think>### TLSR8250蓝牙芯片外设配置指南 根据泰凌微电子TLSR8250芯片手册涂鸦IoT开发规范,以下是基于Tuya Wind IDE的配置实现: 一、UART配置(C0为TX,A1为RX) ```c #include "app_config.h" #include "drivers/8258/gpio.h" #include "drivers/8258/uart.h" // UART配置参数 #define UART_BAUDRATE 115200 #define UART_DATA_BITS UART_DATA_BITS_8 #define UART_STOP_BITS UART_STOP_BITS_1 #define UART_PARITY UART_PARITY_NONE void uart_config(void) { // 配置GPIO复用功能 gpio_set_func(GPIO_PC0, AS_UART); // C0作为TX引脚[^3] gpio_set_func(GPIO_PA1, AS_UART); // A1作为RX引脚 // UART参数初始化 uart_gpio_set(UART_TX_PC0, UART_RX_PA1); // 设置物理引脚映射 uart_reset(); uart_init(UART_BAUDRATE, UART_DATA_BITS, UART_STOP_BITS, UART_PARITY); uart_dma_enable(0, 0); // 禁用DMA模式 } ``` 二、us级定时器配置 ```c #include "drivers/8258/clock.h" #include "drivers/8258/timer.h" #define TIMER_ID TIMER0 #define TIMER_INTERVAL 1000 // 1000us间隔 // 定时器中断服务函数 _attribute_ram_code_ void timer0_irq_handler(void) { static unsigned int counter = 0; if(reg_tmr_sta & FLD_TMR_STA_TMR0){ // 检查定时器0中断标志 reg_tmr_sta = FLD_TMR_STA_TMR0; // 清除中断标志 counter++; // 在此添加定时任务代码 // 例如:uart_send("Timer event\n"); } } void timer_config(void) { // 配置定时器时钟源为48MHz系统时钟 reg_tmr0_tick = 0; reg_tmr_ctrl &= (~FLD_TMR0_CLK); // 清除原有设置 reg_tmr_ctrl |= FLD_TMR0_CLK_SYS; // 设置时钟源[^2] // 配置1us精度(48MHz时钟) reg_tmr0_tick = TIMER_INTERVAL * 48; // 48个时钟周期=1us reg_irq_mask |= FLD_IRQ_TMR0_EN; // 使能定时器中断 reg_tmr_sta = FLD_TMR_STA_TMR0; // 清除挂起中断 reg_tmr_ctrl |= FLD_TMR0_EN; // 使能定时器 } ``` 三、主程序框架 ```c void main() { cpu_wakeup_init(); // 系统时钟初始化 user_read_flash_value_callback(); // 读取Flash配置 timer_config(); // 初始化定时器 uart_config(); // 初始化UART while(1){ // 主循环任务 uart_data_process(); // UART数据处理 cpu_sleep_wakeup(); // 低功耗处理 } } ``` 四、开发环境配置要点: 1. 在Tuya Wind IDE中创建TLSR8250项目时,需在`app_config.h`中启用UART定时器模块 2. 在工程属性中设置芯片型号为TLSR8253F512ET32(根据实际芯片选择) 3. OTA配置需在涂鸦IoT平台设置MCU固件类型[^4] 4. 使用`Ctrl+Alt+S`快捷键打开串口调试窗口验证通信
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪的期许

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值