❶ 如何编程使上位机(界面c#)与下位机(单片机keil c)通过TCP/UDP协议来实现通信,最好有源代码,谢谢~~
看来兄弟是想用单片机弄网络终端啊,但是你的问题描述不够精准, 如果你是想单片机和PC之间实现ip/tcp方式通讯, 那么在单片机端有支持这一协议可以和串口连接的的芯片, PC端的程序实际上你没必要求什么源码, 有源码你也不见得编译过去, 这个看看C#关于网络编程的几步走就行了, 很简单的. 这个方式实际最后还是单片机的串口在起作用, 但是好处棚羡是可以远距离和多设备通信, 不知道这个是不是你的本意, 如果你仅仅是为了完成实验想要实现单片机和winform的通讯那么没必要非用tcp协议, 串口还是很方便的, 你可以winform端绑定一个端口, 然后用VSPM虚链告拍拟串口软件来与单片机通讯, 外设就稍多了.希望我的回答可以帮到你, 不明白的友拿可以追问!
❷ 怎么解决MDK编译的问题
warning: #550-D: variable "d" was set but never used
描述变姿世哗量'd'定义但从未使用或者是虽然这个变量你使用了但编译器认为变量d所在的语句没有意义编返卖译器把它优化了解决仔细衡量所定义的变量d是否有用
若是认定变量d所在语句有意义那么尝试用volatile关键字修饰变量d,若是真的没有用那么删除掉以释放可能的内存
.warning: #1-D: last line of file ends without a newline
描述:
文件最后一行不是新的一行
编译器要求程序文件的最后一行必须是空行想了半天没想通为什么要这样解决可以不理会若是觉得出现警告不迹行爽那么在出现警告的文件的最后一行敲个回车空出一行
warning: #111-D: statement is unreachable
描述:
声明不可能到达多出现在这种场合
int main(void)
{
...
while(1) //
无限循环
,
这在不使用操作系统的程序中最常见
❸ 如何使用MDK建立一个STM32工程
1.解压stm32f10x_stdperiph_lib.zip 可以从ST官方网站免费下载。
2.创建一个Demo文件夹
2.1 新建子文件夹User,用于存放用户源程序
2.2 新建子文件夹Project,用户KEIL工程文件
2.3 在Project下依次创建Obj和List子文简粗件夹,存放编译过程中产生的中间文件。
3. 复制源代码到Demo文件夹
3.1 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2Libraries文件整体复制到Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。
3.2 将库中的演示代码IOToggle中的文件复制到Demo\User文拦卜镇件夹.
4. 新建一个Keil MDK工程
4.1 启动Keil MDK,点击菜单 New uVision Project,然后按向弊源导进行操作
4.2 选择CPU类型为 STM32F103ZE (这是安富莱STM32开发板采用CPU类型)
4.3 当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)
4.4 根据自己的需要修改Target名字。(名字任意)
4.5 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)
User : 存放用户自己写的源代码
RVMDK : 存放启动文件(汇编文件)
StdPeriph_Driver : 存放ST标准库文件
CMSIS : 存放CMSIS接口文件(这也是库的一部分)
4.6 创建好Group后,我们开始依次添加文件。
5. 修改源代码。我们将修改main.c 文件,换成我们自己跑马灯程序。
6. 配置工程, 点击“Options”按钮
6.1 切换到Output。
选择Object文件夹。
在Create Hex File 前打钩。
6.2 切换带Listing。
选择Listings文件夹
6.3 切换到C/C++
添加两个预编译宏 STM32F10X_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏)
修改Includes路径
6.4 切换到Debug
选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器
再 Run to main前打钩
6.4 切换到Utilities
选额调试器类型,我们选择Cortex-M3 J-Link
点settings按钮,添加Flash编程算法,我们选择STM32高密度器件,Flash容量512K字节
7. 配置工程完毕。下面开始编译。
8. 编译OK,开始调试。
9. 教程结束。
❹ 如何在MDK中使用C++,整理的经验
1:在C头文件中加上extern修饰符:
1. #ifdef __cplusplus
2. extern "C" {
3. #endif
4.
5.
6. 。。。。。。。。。。。。。这里写c语言代码
7.
8.
9. #ifdef __cplusplus
10. }
11. #endif
这样在使用C++调用时就使用C++编译器编译,c语言调用时就是用c语言方式编译
2:编写一个C++风格的头文件腊慎,在这里添加extern修前卜饰符:
(一般用在调用已经封装好的库文件或者无法或不想修改.c文件所引用的头文件时)
1. // CStack.h
2. extern "C" {
3. #include "Stack.h";
4. }
或者是直接轮悔敬在需要引用c头文件的cpp文件中
1. // .cpp
2. extern "C" {
3. #include "delay.h";
4. }
❺ 如何用vim调用keil的编译程序
虚激凳常用的有Microsoft公司的MASM系列和Borland公司的TASM系列编译器。
MASM是Microsoft公司推出的汇编编译器。它的版本从低到高经过了很多次的升级(微软的通病,升级补丁多如牛毛)。每铅轿次升级除了例行的错误修正外都增加了一些新的功能,以至于到最后高版本和低版本的语法和功能相差很多,向下兼容性也不好。低版本的MASM固然无法编译高版本的源程序,但高版本的MASM也可能无法正常编译低版本的源程序,如MASM 4.0写的源程序常常无法在MASM 6.x上编译成功。
TASM是Borland公司推出的汇编编译器,也是一种使用很广泛的编译器,和MASM相比,TASM的升级没有这么频繁。TASM早在1.0版本就有了对80386处理器指令的完全支持(MASM要到5.0版本才支持80386指令),1989年推出的1.01版本修正了1.0版的一些错误;早期的版本还有TASM 3.0和TASM 4.0,其中4.0版是TASM系列编译器编写DOS程序使用最广泛的版本。
我在学习16为汇编的时候用的是微软的MASM;下载解压后包含另外的一个链接器LINK~
教材上介绍的汇编程序的编写一般是到DOS里面的EDIT中,但是这个界面很*--不自动换行缩进之类,所以你可以再随便下载个集成开发环境,如上各高差旅手已经说了很多,在实践的时候你可以在那些环境中编写,主要是利用他们对格式的规范化,比如缩进大写等~~然后保存为 *.asm ,打开DOS----切换到MASM+LINK和程序代码所在的目录下----命令 masm *.asm 回车----link *.asm 回车 。即生产EXE文件----命令 *.exe 即可
16位的汇编建议搂主像上手动编译,这样你可以了解其过程,比如察看列表文件等~~
❻ ARM程序用MDK4.12编译出错
这个错误的可能原因:前缺
1.你在其他地方声明void TransferData(char, int)这个函数的时候参数(char, int)不小心打错了.
2.你调用void TransferData(char, int)这个函数时,输入的参数类型与声明的不一致。
另外最好不要直接用Keil uVision4打开Keil uVision3的工程。要新建工程,慧逗辩将Keil uVision3中的文件加载到新工程,重新编译一下指渣。
❼ 有没有大侠用VS2008或者VS2010 + KEIL MDK做STM32开发项目的求方法。。。
用VS编写代码是可以的,但是不带野衡能编译
你可以脊衡这样:
新建一个VS工程,一个MDK工程,两个工程都加添所有代码
在VS里面编辑,在MDK里蠢做面编译,这样是没有问题的
❽ mdk arm4 在编译程序时各个C文件,H文件及启动文件是如何被调用的
像#include"stdio.h"
因为包含输入输出函数,而且用的比物氏较经常握戚
所以编译器启动时就自动包含了
而其他的头文件,如果你不包含的话,我预计你是运行不了的,因为编译器只自动包含#include"stdio.h"
譬如上次我没有包含#include"conio.h",编译器就无法识别WHITE BLACK等一样
所以段蚂陵我觉得你要是养成写头文件的习惯,对你是有好处的——以防编译器突然抽风不加载
希望以上对你有帮助