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

东莞做网站网络公司建筑企业查询

东莞做网站网络公司,建筑企业查询,甘肃兰州市,东莞微网站实现vscode上用gdb调试stm32 这周负责编写设备的某个模块#xff0c;其中遇到了一些变量地址不正确的错误#xff0c;按理这种底层变量错误用gdb一类的调试器就能很快查到#xff0c;可是初入嵌入式一行#xff0c;此C语言非彼C语言#xff0c;对于gdb怎么对接到项目上根…实现vscode上用gdb调试stm32 这周负责编写设备的某个模块其中遇到了一些变量地址不正确的错误按理这种底层变量错误用gdb一类的调试器就能很快查到可是初入嵌入式一行此C语言非彼C语言对于gdb怎么对接到项目上根本一无所知问了下周边同事发现他们居然都是直接打串口日志来调试的那岂不是每次遇到问题都得在代码上留一堆丑陋的printf? 我对如此原始的调试方式实在不服气便想找到相关的对接工具我的开发习惯是在vscode上写好代码后再在keil上编译烧录由于keil的界面和操作实在令我难以接受因此我的需求就是找到在vscode上找到调试单片机的方法一开始我以为占工作时间一两小时就调通了结果发现课题复杂度远超出自己的预期只好乖乖放弃在代码上不断加入丑陋的printf。。。。。。 等到周末终于有时间研究了总之就是不断搜索踩坑整了两天总算完事现作记录。 我使用的是江科大的stm32c8t6开发板仿真器用的st-link-v2。 1.下载openocd gdb对于stm32的调试需要借助一个gdb server, st-link和Jlink都有自带的gdbserver, 我这里选择用openocd作为板子的gdbserver实际上openocd除了调试还可以烧录感兴趣的可以自己深入研究下附一张板子,openocd,pc机之间的关系 openocd尽量选新的我这里是windows平台用的xpack-0.11.0版本之前用的0.10.0版本跟cotrexDebug扩展组合莫名会出行gdb server超时的错误。 这里附openocd的下载地址https://github.com/xpack-dev-tools/openocd-xpack/releases 后面关于如何烧录及开gdb server可自行查找。 2.下载arm-gnu-toolchains arm平台有专属的gccgdbmake等工具用于arm系列开发板的开发stm32的开发和调试工具就靠这些下载https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads windows平台用户可选择 3.MinGW 在windows下作C/C开发的同学应该很熟不作赘述这里记个坑官方下载的时候总是遇到The file has been downloaded incorrectly,据说是网络问题导致直接下官网的压缩包又太慢真的无力。好在已经有好心人贴了百度链接如下https://pan.baidu.com/s/1mIq_Vbn2w45L_B-AGJk0ww?pwdgv1s 参考 Mingw快捷安装教程 并完美解决出现的下载错误The file has been downloaded incorrectly 4.Cotrex-Debug下载及配置 参考https://blog.csdn.net/qq_40833810/article/details/106713462 注意那个configFile可根据相对路径来填另外别把单词写错了当时由于把interface写成interfaces卡了一整晚。。。。 executable部分写keil的axf文件或者bin文件都可以前者确保output选项打勾了Debug Information! 5.STM32CubeMX 对于STM32Cotrex-Debug只支持调试其HAL库的代码对于板子相关的库函数的代码貌似不支持我试过拿江科大的库代码版本烧进板子后vscode F5调试gdb没响应显然是不兼容。目前stm32开发已经是HAL库的天下了一个HAL库兼容st下所有型号的板子这么高效的开发怎么能不学呢看来当时应该买正点的板子的然而太贵了。。。。 STM32CubeMX是ST公司为其开发板做的专属项目生成工具支持MDK-ARM和makefile两种编译方法各位同学可根据自身需求选择自己的编译方式, 它就是用的HAL库而且似乎只能用HAL库如果学的板子相关标准库的同学江科大就是stm32f103的标准库得多做点功课。。。。 另外这东西可以图形化配置芯片的IO口和时钟最后生成相关的配置代码还挺方便的。。。 拿江科大的LED闪烁实验来说原代码是这样 #include stm32f10x.h // Device header #include Delay.hint main(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);while (1){GPIO_ResetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);GPIO_SetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)1);Delay_ms(500);} } 在STM32CubeMX里面可以预先把IO口设置好我这里由于PA0和System-WKUP冲突改选了PA1将PA1设置为推挽输出的操作如图 最后generate code可在MX_GPIO_Init()一行看到 自己的配置已经被落实了 static void MX_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStruct {0}; /* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 *//* GPIO Ports Clock Enable */__HAL_RCC_GPIOD_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);/*Configure GPIO pin : PA1 */GPIO_InitStruct.Pin GPIO_PIN_1;GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH; //HAL库中LOW,MEDIUM,HIGH三档分别对应库函数的2MHZ,10MHZ,50MHZHAL_GPIO_Init(GPIOA, GPIO_InitStruct);/* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ }闪烁灯代码如下 int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE */HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);HAL_Delay(500);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);HAL_Delay(500);/* USER CODE BEGIN 3 */}/* USER CODE END 3 */ }6.最终效果 在vscode的launch.json上配置好 {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid830387version: 0.2.0,configurations: [{name: Cortex Debug,cwd: ${workspaceFolder},request: launch,type: cortex-debug,runToEntryPoint: main,servertype: openocd,configFiles: [interface/stlink.cfg,target/stm32f1x.cfg],executable:build/mdk_arm_test.axf,svdFile: D:/Arm/Packs/Keil/STM32F1xx_DFP/2.2.0/SVD/STM32F103xx.svd,}] }用之前STM32CubeMX生成的HAL库的代码直接在keil上面编译烧录。 然后上vscode, F5开启调试成功尽情享受吧
http://www.w-s-a.com/news/295505/

相关文章:

  • 北京网站建设求职简历十堰seo优化教程
  • 网站顶部可关闭广告微信小程序多少钱
  • 网站背景怎么弄斜杠青年seo工作室
  • ps个人网站首页怎么制作如何做网站的版块规划
  • 做网站的市场开源建站工具
  • 邹平做网站哪家好自动点击器app
  • 南阳seo网站排名优化wordpress文章对游客不显示
  • 网站301什么意思湛江市seo网站设计报价
  • 免费建造网站化妆品网络营销方案
  • 建公司网站wordpress the content
  • 网站的站点的管理系统建设银行网站注册企业
  • 长春火车站是哪个站做微商哪个网站有客源
  • 亚马逊培训费用一般多少seo专业培训课程
  • 做推文封面图网站南宁高端网站建设
  • 天津网站搜索排名做电影免费ppt模板下载网站
  • 襄樊最好网站建设价格网站建设与设计 毕业设计
  • 网站推广广告词大全集网站建设相对路径
  • 甘肃省铁路投资建设集团有限公司网站域名怎么实名认证
  • 企业网站建设的层次返利网站建设
  • 竞价单页网站制作中小企业网站建设问题
  • 响应式网站源码学校网站制作多少钱
  • 营销型网站建设需要懂什么网站建站四件套是什么
  • 廊坊哪里有制作手机网站的区块链开发语言
  • 找建设项目的网站装企工长网站开发
  • 戴尔网站建设成功方正网站制作
  • 怎么买网站域名wordpress 视频站模版
  • 厦门官网建设公司杨和关键词优化
  • 怎么做网约车seo自动优化软件下载
  • 遵义市住房和城乡建设局官方网站网站备案 自己的服务器
  • 分销系统价格多少北京网站优化平台