专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
求一TMSF28335串口通信,控制步进电机转速和方向程序
2019-07-27 22:54
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
15145
19
984
如题,小弟在做毕设,关于F28335与PC机进行串口通信,通过串口发送指令给DSP来控制步进电机的转速和方向。可是,无奈接触DSP不久,怎么不能和PC机进行通信,更别说控制步进电机,特此来求助各位大神,有没有这方面的程序,急急急。。。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
Spurs_1
2019-07-29 19:58
zhangmangui 发表于 2015-5-18 21:56
问题比较多啊
看看我的相关分享
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include"SCI.h"
extern void sci_init(Uint16 channel);
Uint16 RV_1; // RV_1定义为接收字符
extern void Step_dianji_1(void); //电机正转
extern void Step_dianji_2(void); //电机反转
//==========函数声明======
interrupt void scicTx_isr(void); //发送中断
interrupt void scicRX_isr(void); //接收中断
interrupt void scicTx_isr()
{
PieCtrlRegs.PIEACK.all|=M_INT8; //
}
interrupt void scicRx_isr()
{
RV_1=sci_recvonechar(SCIC);
PieCtrlRegs.PIEACK.all|=M_INT8; //
}
void main(void)
{
/*********begin*******************/
// Uint16 ReceivedChar;
/*********end********************/
// char *msg;
InitSysCtrl(); // 系统初始化
DINT; //禁止CPU中断
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
DELAY_US(1000L);
InitScicGpio() ;
//init SCIC
sci_init(SCIC);
EALLOW;
//PieVectTable.SCITXINTA=&sciaTx_isr;
//PieVectTable.SCITXINTA=&sciaRx_isr;
//PieVectTable.SCITXINTB=&scibTx_isr;
//PieVectTable.SCITXINTA=&scibTx_isr;
PieVectTable.SCITXINTC=&scicTx_isr;
PieVectTable.SCIRXINTC=&scicRx_isr;
EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE=1; //Enable
//IER|=M_INT9;
IER|=M_INT8; //Enable PIEINT8(SCIC)
// PieCtrlRegs.pieier9.bit.INTx1=1
// PieCtrlRegs.pieier9.bit.INTx2=1
// PieCtrlRegs.pieier9.bit.INTx3=1
// PieCtrlRegs.pieier9.bit.INTx4=1
PieCtrlRegs.PIEIER8.bit.INTx5=1; // SCI_RX_INT
PieCtrlRegs.PIEIER8.bit.INTx6=1; // _TX_
EINT;
ERTM;
sci_sendonechar(SCIC,'A');
//sci_sendlistchar(SCIC,"Hello ");
for(;;)
{
if(RV_1=='A')
{Step_dianji_1();
sci_sendonechar(SCIC,'B');}
if(RV_1=='C')
{Step_dianji_2();
sci_sendonechar(SCIC,'D');}
}
} // end of main
void sci_init(Uint16 channel)
{
//-----初始化SCIC-----
if(channel== SCIC)
{
//初始化用到的GPIO引脚为外设模式
ScicRegs.SCICCR.all=0x07; // 1位停止位,禁止内部回路功能,无奇偶校检位
ScicRegs.SCICTL1.all=0x03; //使能TX,RX,使能SCICLK
ScicRegs.SCIHBAUD=0x1; //9600波特率 LSPCLK=37.5MHhz
ScicRegs.SCILBAUD=0xE7;
ScicRegs.SCICTL2.bit.RXBKINTENA=1; //
ScicRegs.SCICTL2.bit.TXINTENA=1; //
}
}
//* 通过指定的SCI端口发送一个字符串
//***********
void sci_sendonechar(Uint16 channel,Uint16 data)
{
ScicRegs.SCITXBUF=data;
while(ScicRegs.SCICTL2.bit.TXRDY==0); //等待,直到SCITXBUF可以接收下一个数据
}
// 存储指定SCI端口所接收到的数据
// *********************************
Uint16 sci_recvonechar(Uint16 channel)
{Uint16 data;
if(channel==SCIC)
{data=ScicRegs.SCIRXBUF.all;}
return data;
}
这是我改的 串口程序,电脑串口助手驱动都整好了,就是不能正常收发,步进电机程序还没加入
加载中...
查看其它19个回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include"SCI.h"
extern void sci_init(Uint16 channel);
Uint16 RV_1; // RV_1定义为接收字符
extern void Step_dianji_1(void); //电机正转
extern void Step_dianji_2(void); //电机反转
//==========函数声明======
interrupt void scicTx_isr(void); //发送中断
interrupt void scicRX_isr(void); //接收中断
interrupt void scicTx_isr()
{
PieCtrlRegs.PIEACK.all|=M_INT8; //
}
interrupt void scicRx_isr()
{
RV_1=sci_recvonechar(SCIC);
PieCtrlRegs.PIEACK.all|=M_INT8; //
}
void main(void)
{
/*********begin*******************/
// Uint16 ReceivedChar;
/*********end********************/
// char *msg;
InitSysCtrl(); // 系统初始化
DINT; //禁止CPU中断
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
DELAY_US(1000L);
InitScicGpio() ;
//init SCIC
sci_init(SCIC);
EALLOW;
//PieVectTable.SCITXINTA=&sciaTx_isr;
//PieVectTable.SCITXINTA=&sciaRx_isr;
//PieVectTable.SCITXINTB=&scibTx_isr;
//PieVectTable.SCITXINTA=&scibTx_isr;
PieVectTable.SCITXINTC=&scicTx_isr;
PieVectTable.SCIRXINTC=&scicRx_isr;
EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE=1; //Enable
//IER|=M_INT9;
IER|=M_INT8; //Enable PIEINT8(SCIC)
// PieCtrlRegs.pieier9.bit.INTx1=1
// PieCtrlRegs.pieier9.bit.INTx2=1
// PieCtrlRegs.pieier9.bit.INTx3=1
// PieCtrlRegs.pieier9.bit.INTx4=1
PieCtrlRegs.PIEIER8.bit.INTx5=1; // SCI_RX_INT
PieCtrlRegs.PIEIER8.bit.INTx6=1; // _TX_
EINT;
ERTM;
sci_sendonechar(SCIC,'A');
//sci_sendlistchar(SCIC,"Hello ");
for(;;)
{
if(RV_1=='A')
{Step_dianji_1();
sci_sendonechar(SCIC,'B');}
if(RV_1=='C')
{Step_dianji_2();
sci_sendonechar(SCIC,'D');}
}
} // end of main
void sci_init(Uint16 channel)
{
//-----初始化SCIC-----
if(channel== SCIC)
{
//初始化用到的GPIO引脚为外设模式
ScicRegs.SCICCR.all=0x07; // 1位停止位,禁止内部回路功能,无奇偶校检位
ScicRegs.SCICTL1.all=0x03; //使能TX,RX,使能SCICLK
ScicRegs.SCIHBAUD=0x1; //9600波特率 LSPCLK=37.5MHhz
ScicRegs.SCILBAUD=0xE7;
ScicRegs.SCICTL2.bit.RXBKINTENA=1; //
ScicRegs.SCICTL2.bit.TXINTENA=1; //
}
}
//* 通过指定的SCI端口发送一个字符串
//***********
void sci_sendonechar(Uint16 channel,Uint16 data)
{
ScicRegs.SCITXBUF=data;
while(ScicRegs.SCICTL2.bit.TXRDY==0); //等待,直到SCITXBUF可以接收下一个数据
}
// 存储指定SCI端口所接收到的数据
// *********************************
Uint16 sci_recvonechar(Uint16 channel)
{Uint16 data;
if(channel==SCIC)
{data=ScicRegs.SCIRXBUF.all;}
return data;
}
这是我改的 串口程序,电脑串口助手驱动都整好了,就是不能正常收发,步进电机程序还没加入
一周热门 更多>