共2条
1/1 1 跳转至页
2407,sci,nbsp,nbsp,rs232 2407 sci rs232 通信程序
问
小弟从这里学到了不少知识就把自己编的小程序拿来共享啊
请各位大虾以及和小弟一样的虾米过目啊
好用,我已经调过了,嘿嘿
#include "2407c.h"
//系统初始化
#pragma CODE_SECTION(Init,".flash");
void Init()
{
*SCSR1=0X83FE;
*WDCR=0X0E8;
asm(" SETC INTM");
asm(" CLRC OVM");
asm(" CLRC CNF");
asm(" CLRC SXM");
*IMR=0X0000;
*IFR=0X0FFFF;
}
//SCI初始化
#pragma CODE_SECTION(InitSci,".flash");
void InitSci()
{
*MCRA=(*MCRA)|0X3;
*SCICCR=0X7;
*SCICTL1=0X0013;
*SCICTL2=0X0003;
*SCIHBAUD=0X2;
*SCILBAUD=0X07;//波特率4800
*SCICTL1=0X33;
*SCIPRI=0X60;
*IMR=(*IMR)|0X10;
asm(" CLRC INTM");
}
//
#pragma CODE_SECTION(Send,".flash");
void Send(char *var)
{
int i;
for(i=0;i<=strlen(var);i++)
{
*SCICTL2=(*SCICTL2)&0X0C0;
while((*SCICTL2)!=0X0C0);
*SCITXBUF=var[i];
}
}
#pragma CODE_SETION(Uartrec,".flash");
void Uartrec()
{
static char receive[10],j=0;
receive[j++]=*SCIRXBUF;
if(j>9) j=0;
*IFR=0X0010;
asm(" CLRC INTM");
}
//
main()
{
Init();
InitSci();
Send("ni hao");
while(1);
}
#pragma CODE_SECTION(Uarttr,".gisr");
void interrupt Uarttr()
{
switch(*PVIR)
{
case6:Uartrec();break;
default:break;
}
}
#pragma CODE_SECTION(nothing,".gisr");
void interrupt nothing()
{
return;
} 答 1: 看不懂,看不懂。可能是语法还没有学会吧。 答 2: 每个子程序前的#pragma CODE_SECTION是什么意思是把下面的程序放到#pragma CODE_SECTION后面说明的存储器空间里吗?
这是在哪本书看到的啊 答 3: 对#pragma是伪指令可以把程序或者变量放到你定义的段中 答 4: 晕晕 答 5: 我得sci和DSP一通信就死机我用sci 接收信号可是接收处设置断点,DSP总是到不了断点,我停止运行程序后,会系统复位,或者让退出环境,如果取消断点就会提醒不能取消,真是奇怪了。原来做的那块板子没有问题的,现在做的这块由于太小是不是信号干扰?
sci接收信号线和复位信号线靠的较近。
大家看看啥问题呀,着急,调了很多天了,没有进展。
请各位大虾以及和小弟一样的虾米过目啊
好用,我已经调过了,嘿嘿
#include "2407c.h"
//系统初始化
#pragma CODE_SECTION(Init,".flash");
void Init()
{
*SCSR1=0X83FE;
*WDCR=0X0E8;
asm(" SETC INTM");
asm(" CLRC OVM");
asm(" CLRC CNF");
asm(" CLRC SXM");
*IMR=0X0000;
*IFR=0X0FFFF;
}
//SCI初始化
#pragma CODE_SECTION(InitSci,".flash");
void InitSci()
{
*MCRA=(*MCRA)|0X3;
*SCICCR=0X7;
*SCICTL1=0X0013;
*SCICTL2=0X0003;
*SCIHBAUD=0X2;
*SCILBAUD=0X07;//波特率4800
*SCICTL1=0X33;
*SCIPRI=0X60;
*IMR=(*IMR)|0X10;
asm(" CLRC INTM");
}
//
#pragma CODE_SECTION(Send,".flash");
void Send(char *var)
{
int i;
for(i=0;i<=strlen(var);i++)
{
*SCICTL2=(*SCICTL2)&0X0C0;
while((*SCICTL2)!=0X0C0);
*SCITXBUF=var[i];
}
}
#pragma CODE_SETION(Uartrec,".flash");
void Uartrec()
{
static char receive[10],j=0;
receive[j++]=*SCIRXBUF;
if(j>9) j=0;
*IFR=0X0010;
asm(" CLRC INTM");
}
//
main()
{
Init();
InitSci();
Send("ni hao");
while(1);
}
#pragma CODE_SECTION(Uarttr,".gisr");
void interrupt Uarttr()
{
switch(*PVIR)
{
case6:Uartrec();break;
default:break;
}
}
#pragma CODE_SECTION(nothing,".gisr");
void interrupt nothing()
{
return;
} 答 1: 看不懂,看不懂。可能是语法还没有学会吧。 答 2: 每个子程序前的#pragma CODE_SECTION是什么意思是把下面的程序放到#pragma CODE_SECTION后面说明的存储器空间里吗?
这是在哪本书看到的啊 答 3: 对#pragma是伪指令可以把程序或者变量放到你定义的段中 答 4: 晕晕 答 5: 我得sci和DSP一通信就死机我用sci 接收信号可是接收处设置断点,DSP总是到不了断点,我停止运行程序后,会系统复位,或者让退出环境,如果取消断点就会提醒不能取消,真是奇怪了。原来做的那块板子没有问题的,现在做的这块由于太小是不是信号干扰?
sci接收信号线和复位信号线靠的较近。
大家看看啥问题呀,着急,调了很多天了,没有进展。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |