Ⅰ 求指导,用电脑做上位机,利用串口怎么实现对STM32各个引脚的控制
通过电脑连接stm32的usart外设,通过你自己定义的通讯协议,在usart接收中断中编写中断处理程序,比如收到 GPIOA1就改变这个io的功能什么的。主要看你电脑和stm32的通讯协议怎么编写了。
Ⅱ 求教,下位机(基于stm32)能否实现上位机的部分功能
就 stm32 而言,处理速度是够用了,只是RAM太小,装不了多少文本的,如果用FSMC扩展一下RAM应该够了。
还有就是软件,目前好像没有什么可供stm32运行的文本编辑器程序,你可能需要移植一个,最简单的是以前PC机的DOS系统下的文本编辑器,体积也不大。
Ⅲ STM32是否需要PC机编程用哪些软件
必须要PC机编程啊,STM32自己可不能编译程序!
用的软件,一般就是keil MDK,最好的就是IAR for stm32,还有听说不多的TASKING编译器。
Ⅳ stm32如何接受到来自上位机的指令啊
串口通信,需要哪些数据传输,根据你设计的程序确定。比如程序中用到A,那么你可以在上位机中改变,然后判断A是否改变,如改变怎使用最新的值。
Ⅳ 给stm32做上位机,用什么语言编程合适
支持较底层的语言都可以,像C#、C++、Delphi等。。。。。。甚至java。。。。。还要看是作什么服务用的,最后才确定语言
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ⅵ 单片机使用的是stm32,将采集到的数据进行上位机显示。对上位机小白,该使用什么软件来编写
多数用VB写的,也有用C++等其它编写的。
Ⅶ 【上下位机通信】:下位机(STM32)通过网口(DM9000之类的.)向上位机PC发送数据。求上位机例子程序~
用socket 类 udp tcp 我这给你个 最简单的例子 udp
服务器端
ImportsSystem.Net.Sockets
ImportsSystem.Net
Molesocketsever
Submain()
startserver()
EndSub PrivateSubstartserver()
'创建服务器端的socket
DimsServerAsNewSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp)
DimmyipAsIPAddress
'制订本地回路的ip地址
myip=IPAddress.Parse("10.13.115.105")
'设置服务器端口号
DimsServerepAsNewIPEndPoint(myip,2001)
'设置客户端的端口号
DimclientepAsNewIPEndPoint(myip,2002)
'将端口与socket绑定
sServer.Bind(sServerep)
WhileTrue
Try
Dimbytes(100)AsByte
'等待客户端的请求
sServer.ReceiveFrom(bytes,clientep)
DimstrAsString=System.Text.Encoding.ASCII.GetString(bytes)
'将字符转化成大写
str=str.ToUpper
bytes=System.Text.Encoding.ASCII.GetBytes(str)
'返回结果
sServer.SendTo(bytes,clientep)
CatcheAsSocketException
EndTry
EndWhile
EndSub
EndMole客户端
界面 和程序
ImportsSystem.Net.Sockets
ImportsSystem.Net
PublicClassForm1
InheritsSystem.Windows.Forms.Form
PrivateSubbsend_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handlesbsend.Click
'创建客户端的socket
DimcClientAsNewSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp)
'指定本地回路的ip地址
Dimmyip,myip1AsIPAddress
myip=IPAddress.Parse("10.13.115.105")
myip1=IPAddress.Parse("10.13.115.136")
'设置服务器端口号
DimServerepAsNewIPEndPoint(myip1,2001)
'设置客户端的端口号
DimclientepAsNewIPEndPoint(myip,2002)
'将端口与socket绑定
cClient.Bind(clientep)
Try
DimstrAsString=Textinput.Text
Dimbytes()AsByte=System.Text.Encoding.ASCII.GetBytes(str)
'向服务器发出请求
cClient.SendTo(bytes,Serverep)
Dimbytes2(100)AsByte
'接受服务器的响应结果
cClient.ReceiveFrom(bytes2,Serverep)
str=System.Text.Encoding.ASCII.GetString(bytes2)
'将结果显示在文本框中
Textdisplay.Text=Textdisplay.Text&vbNewLine&str
CatcherAsSocketException
MsgBox(er.ToString)
EndTry
cClient.Close()
EndSub
EndClass
Ⅷ stm32怎么通过printf发送数据到上位机
这个需要通过STM32的串口。
①如果你的上位机是电脑,那么需要一个USB转TTL,TTL端接STM32串口。
②编写STM32串口驱动(这个很容易的,配置引脚和串口)
③通过标准库的printf或自己编写printf与串口驱动对接。
我以前做智能小车写了一份串口驱动,你可以自己看然后改一下:
(或者可以用库函数,网络很容易找到,我不太喜欢库函数)
/*******************usart_asm.s*******************/
;****usart驱动,汇编版****
USART1 EQU 0X40013800
USART2 EQU 0x40004400
DROS EQU 0X04
SROS EQU 0X00
;接口声明
EXPORT printChar
EXPORT printStr
EXPORT printNum
EXPORT SelectUsart
;接口声明,END
;引用声明
IMPORT Div_U32
;引用声明,end
;数据区
AREA USART_ADDRESS,DATA,READWRITE
Cur_Usart DCD USART2 ;当前usart地址存储,默认为usart2
Num_Buffer SPACE 12 ;定义10byte缓冲堆栈
;数据区,end
AREA USART_CODE,CODE,READONLY
;SelectUsart,选择Usart,参数2:usart器件代号(1=usart1,非1=usart2)
SelectUsart
STMFD SP!,{R1,LR} ;入栈
LDR R1,=Cur_Usart ;读入usart地址暂存器地址
CMP R0,#1
BNE U2
U1 LDR R0,=USART1
B SETSR
U2 LDR R0,=USART2
SETSR
STR R0,[R1]
LDMFD SP!,{R1,PC} ;出栈
;SelectUsart,end
;***printChar ,参数1:char
printChar
STMFD SP!,{R1-R2,LR} ;入栈
LDR R1,=Cur_Usart
LDR R1,[R1] ;载入Usart地址
CHR_WAIT
LDR R2,[R1,#SROS] ;读状态寄存器
TST R2,#0X80
BEQ CHR_WAIT ;等待上次传输完成
STRB R0,[R1,#DROS] ;写入
LDMFD SP!,{R1-R2,PC} ;出栈
;***printChar ,end
;***printStr ,参数1:str
printStr
STMFD SP!,{R1-R3,LR} ;入栈
LDR R1,=Cur_Usart
LDR R1,[R1] ;载入Usart地址
SEND_STR
LDR R2,[R1,#SROS]
TST R2,#0X80
BEQ SEND_STR ;等待上次传输完成
LDRB R3,[R0],#1 ;将指针(R0)处字符读入R3
STRB R3,[R1,#DROS];写入
CMP R3,#0
BNE SEND_STR;循环直到结束符'