去年因为某些原因学习了一下C#,主要是为了写单片机上位机用的,所以接触了一下Visual Stdio 2015这个IDE,用完感觉是真心好,宇宙第一IDE一点毛病都没有。
那时候是单片机,上位机在一起学习,一边用着KEIL,一边用着Visual Stdio,简直就是冰火两重天(当然Keil也有一些优点,毕竟是ARM旗下的IDE嘛)
首先说一下Visual Stdio:①智能补全(再加上VassistX智能补全,简直完美,打几个字母,一条语句就出来了)
②代码高亮显示,关键字,宏定义等等,不同的东西,不同的颜 {MOD}
③调试:太强大了,在线调试,条件断点,动态变量,还有动态变量的波形图(配上STM32的ADC姑且可以算是个示波器吧,当然跟上千的示波器没法比)
④文件管理也很强大,还能自己写Makefile(当然我这种垃圾是不会的)
⑤实时监控STM32的所有寄存器(在SWD或者JTAG有效的情况下)
⑥很多啊,我这种小菜鸟也就知道着一些,VS的强大我只摸到冰山一角(冰山一角的一角),毕竟是宇宙第一IDE
缺点 ①呵,软件大,大,大,除了大,还是大,配置太低的电脑可能有些吃力,当然VS已经优化很多了,至少一般的电脑很少出现卡顿,很流畅。
②Keil调试的时候有seconds这个时间,可以调试时间,但VS上没有(或许是有的,但我无能没发现也不一定)
③(等等......)
下面放点图吧(勿喷)
吧
首先要准备什么东西
①Visual stdio(版本么随便你吧)
②AvssistX(这个是只能补全代码的插件,可自行百度下破解版,如果不用,也可以用Vs本身就自带的智能补全,也很强大,但这个插件很强)
③Visual GDB(这个是必须的,要编写,调试STM32,这个是必须的,同样还能在线调试Linux,通过SSH,这里就不说了,反正我也不会,这个也百度下破解版)
④VS VIM(这个插件是对于喜欢离开鼠标的狂人,是和Linux的VIM一样的文本编辑器,解放双手,鼠标是程序员思维的破坏者嘛!我暂时还没体会到,但用着很爽)
进入正题:怎么用VS编写STM32并且将程序下载到STM32中
下载进去暂时有两种方法
①通过烧写软件(需要HEX文件,VS生成的16进制文件是ihex,直接把后缀改成hex就能下载了)
②各种在线调试器(什么J-Link啊,ST-Link啊,啦啦啦啦啦,你们都懂的了)
第一:怎么用Visual GDB编写程序,直接上图
步骤一:文件-》新建-》项目
步骤二:如图选....英文打着麻烦,我四级还没过呢,......(努力中,不过四级大学不毕业)
步骤三:也是吧..按着图来,下载两个Devices(STM32 Devices 和 Atmel ARM Devices)(我也不知道哪个有用,我看我就下啦俩,就全上图了)
步骤四:然后按照图示查找自己开发板STM32的型号,选择后NEXT就行啦
注:下面的Execute From意思是吧程序下载到哪里..(当然是选FLASH)
还有C library Type是啥,恩,不知道,我只知道,如果要用Visual GDB内部的控制台显示printf什么的就要选下拉框的第一个,(缺省,不会拼,就是下拉框地最短的那一个)
步骤五:就下来就是选使用的库了,有HAL库,还有固件库,还有FreeRTOS的,自己选吧,反正我是固件库
在下面是初始LED,根据自己开发板选GPIO和Pin,下面闪烁时间默认就好了(主要是用来看看链接成功不成功)
步骤六:这里是选调试器的,如果使用烧录器下载,这里....emmmmmm,我也不知道了,反正后面是用ihex文件烧录的,梗调试器就没啥关系了.....
注意!:::::!!!!J-LINK的一定要选SWD(low-level)
注意!:::::!!!!J-LINK的一定要选SWD(low-level)
注意!:::::!!!!J-LINK的一定要选SWD(low-level)
三遍!!!!!!!!!!!!!!!!!!!!!!!!!
然后finish
步骤七:安装Jlink的驱动了,交WinUSB(直接点图示的那个就可以开始了)
注意:一定要将调试器连上电脑
然后一直等他结束吧
然后就好了嘛
点本地Windows调试器,如果灯闪了那就是配置好了
(自己排版一下文件,按着自己的喜好排,爱怎么着怎么着,排好之后到处模板就好了)
接下来,我尼玛,智能补全呢,高亮显示呢,恩?都打灰机去了吗!?
不急,接着看:选你的工程(注意不是第一行的解决方案,右击选Visual GDB Project......)
然后选IntelLisense Setting把IntelLisense engine下拉选择第二个(中间那个,如图)就能高亮加智能补全了,最好是加上AVssistX,会更好
如果AVssistX出现注释会有红 {MOD}波浪线的话
菜单栏选AVssistX->Visual Assist Options->underlines,里面两个全部取消勾选就行了
最后一个就是包含头文件目录的
上图(包含进来就好了)
好了接下来就开始编写你的程序吧(用cpp文件名就好了,不用改成.c)
如果还有一些问题,就在下面留言或者百度吧,我能回答的我尽量回答,回答不了的只能怪我无能咯。
好了全手打,俺要睡觉了,困
临走来几张调试的图片
好吧...这一张图示盗的.....下面一张是自己的
结束睡觉!嘻嘻
报错内容如下
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 undefined reference to `delay_ms(unsigned short)' EmbeddedProject1 D:桌面EmbeddedProject1EmbeddedProject1LEDBlink.cpp 35
错误 undefined reference to `delay_ms(unsigned short)' EmbeddedProject1 D:桌面EmbeddedProject1EmbeddedProject1LEDBlink.cpp 32
错误 undefined reference to `delay_init()' EmbeddedProject1 D:桌面EmbeddedProject1EmbeddedProject1LEDBlink.cpp 18
我的工程目录如下
我的代码如下:
[mw_shl_code=c,true]#include <stm32f10x_gpio.h>
#include <stm32f10x_rcc.h>
#include <delay.h>
#include <sys.h>
#include <usart.h>
void Delay()
{
int i;
for (i = 0; i < 1000000; i++)
asm("nop");
}
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
delay_init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
for (;;)
{
GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
//Delay();
delay_ms(500);
GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET);
//Delay();
delay_ms(500);
}
}
[/mw_shl_code]
我已经将头文件目录按照你的演示加入了头文件目录,但是还是报错,尝试将这几个文件加入系统的头文件目录,也就是官方库文件所在的目录来包含但是问题并没有解决,
一周热门 更多>