❶ 如何編程使上位機(界面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等一樣
所以段螞陵我覺得你要是養成寫頭文件的習慣,對你是有好處的——以防編譯器突然抽風不載入
希望以上對你有幫助