快速搭建VsCode开发环境以使用TI CC2642R1

需积分: 10 1 下载量 74 浏览量 更新于2024-10-26 收藏 607KB RAR 举报
资源摘要信息:"TI CC2642R1 快速搭建VsCode开发环境" 知识点概述: 1. 开发环境搭建 - 使用Visual Studio Code (VsCode)作为开发环境。 - 集成 Embedded IDE 插件进行嵌入式开发。 - 利用 Cortex-Debug 进行调试。 - 结合 TI 的 CC2642R1 蓝牙低功耗无线微控制器进行开发。 2. 系统配置工具syscfg的使用 - syscfg是一个系统配置工具,通常用于生成TI微控制器的配置文件。 - 这里特别提到的是通过命令行(cmd)调用syscfg,具体操作是执行一个命令行指令,通过这个指令配置TI的CC26X2R1_LAUNCHXL开发板。 - 指令中使用的参数包括: - --compiler 指定编译器,这里使用的是IAR。 - --product 指定产品相关的配置文件(product.json)。 - --output 指定输出配置文件的路径和文件名。 - --board 指定开发板型号。 3. TI CC2642R1 微控制器 - CC2642R1是德州仪器(Texas Instruments)推出的一款支持蓝牙5.2的低功耗无线微控制器。 - CC2642R1适用于各种物联网(IoT)应用,能够满足设备间通信以及与其他蓝牙设备连接的需求。 - 配合CC26x2R1_LAUNCHXL开发板,可以快速实现开发和原型设计。 4. VsCode集成开发环境配置步骤 - 安装Visual Studio Code IDE。 - 安装并配置Embedded IDE插件。 - 设置Cortex-Debug插件,用于调试微控制器。 - 获取并安装CC2642R1的SDK,即simplelink_cc13x2_26x2_sdk。 - 配置syscfg工具路径,确保可以通过cmd调用。 5. 文件压缩包内容解析 - 提供的压缩包名为open_syscfg.rar,解压后包含两个文件:open_syscfg.e和open_syscfg.exe。 - 这两个文件可能是与syscfg工具相关的可执行文件或者脚本,用于帮助开发者快速生成CC2642R1的配置文件。 - 具体文件功能和使用方法需要根据压缩包内文档或其他指引文件进行确认。 深入知识点详解: - syscfg工具是德州仪器提供的一个用于微控制器配置的命令行工具,它允许开发者自定义各种系统配置,如时钟频率、外设配置等,并生成相应的配置文件(.syscfg)。 - 使用命令行进行系统配置的优点在于自动化程度高,可复制性好,便于集成到持续集成/持续部署(CI/CD)流程中。 - 开发者需要关注的点包括如何正确设置syscfg命令行参数、如何针对特定项目选择正确的配置文件和目标开发板信息。 - 在VsCode中使用syscfg,需要确保命令行工具可被VsCode访问,通常需要将syscfg的路径添加到环境变量中,或者在VsCode的配置文件中指定syscfg的完整路径。 - 对于CC2642R1微控制器,开发者通常需要通过syscfg配置与蓝牙相关的堆栈选项、外设接口和系统级别的参数,如电源管理、低功耗模式等。 - Cortex-Debug插件是VsCode中用于调试ARM Cortex-M系列微控制器的重要工具,它支持JTAG和SWD调试接口,并且可以用于断点设置、内存查看、寄存器操作等调试操作。 实践操作建议: - 在搭建开发环境之前,开发者应该详细阅读TI的官方文档,了解CC2642R1微控制器和syscfg工具的具体使用方法。 - 确保VsCode和所有相关插件都已正确安装,并且配置正确。 - 熟悉命令行操作,特别是在系统配置过程中可能出现的参数错误和路径问题。 - 使用压缩包中的文件前,应阅读文件内的文档说明,以了解这些文件的用途和配置方法。 - 进行实际开发之前,可以先从TI提供的示例项目开始,逐步掌握从编译到调试的整个流程。 以上内容详细说明了使用open_syscfg.rar文件搭建TI CC2642R1开发环境所需的步骤和相关知识要点。对于希望从事TI系列微控制器开发的工程师而言,这些知识点是不可或缺的基础。
2023-07-20 上传

在保持原来的代码逻辑的条件下,根据STM32F407的特性,把下面STM32F1的代码移植到STM32F407。void ExtiGpioInit(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5 ; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStruct); } void ExtiNvicInit(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void ExtiModeInit(void) { EXTI_InitTypeDef EXTI_InitStructure; GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_Line = EXTI_Line4; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_Line = EXTI_Line5; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); }

2023-07-09 上传

为下面每一行代码添加注释:#include "stm32f10x.h" void RCC_Configuration(void) { /* Enable GPIOA, GPIOC and AFIO clocks / RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); / Enable SYSCFG clock / RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; / Configure PA0 pin as input floating / GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); / Configure PC13 pin as output push-pull / GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); } void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure / Configure the NVIC Preemption Priority Bits / NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); / Enable the EXTI0 Interrupt / NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; / Configure EXTI Line0 to generate an interrupt on falling edge / EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); / Connect EXTI Line0 to PA0 pin / GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); } void SysTick_Configuration(void) { / Configure SysTick to generate an interrupt every 1ms / if (SysTick_Config(SystemCoreClock / 1000)) { / Capture error / while (1); } } void Delay(__IO uint32_t nTime) { / Wait for nTime millisecond / TimingDelay = nTime; while (TimingDelay != 0); } void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } } int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); EXTI_Configuration(); SysTick_Configuration(); / Infinite loop / while (1) { / Toggle PC13 LED every 500ms / GPIOC->ODR ^= GPIO_Pin_13; Delay(500); } } void EXTI0_IRQHandler(void) { / Check if PA0 button is pressed / if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { / Reset MCU / NVIC_SystemReset(); } / Clear EXTI Line0 pending bit */ EXTI_ClearITPendingBit(EXTI_Line0); }

2023-06-03 上传