共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 跳转至页
回复
打赏帖 | |
---|---|
C语言函数宏的三种封装方式被打赏50分 | |
【STM32F769】记一次由于开启D-Cache之后DMA数据传输出错的问题查找与解决被打赏35分 | |
嵌入式LinuxC语言程序调试和宏使用技巧被打赏50分 | |
让代码中包含最新的编译时间信息被打赏50分 | |
【分享开发笔记,赚取电动螺丝刀】STM32F769LVGL优化显示被打赏26分 | |
rtthread硬件加密--2crc加密分析被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】STM32F769驱动ST7789以及显示优化被打赏36分 | |
【分享开发笔记,赚取电动螺丝刀】S32K146 PAL模拟I2C驱动适配被打赏23分 | |
我想要一部加热台+电源硬件设计规范被打赏16分 | |
我想要一部加热台+LED背光驱动芯片RT9293知识被打赏18分 |