共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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
我要赚赏金打赏帖 |
|
|---|---|
| PTC与NTC功能常规对比被打赏¥14元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于3pin锂电池接口的介绍/使用被打赏¥16元 | |
| 以启明云端ESP32P4开发板实现TF卡读写功能被打赏¥28元 | |
| 【分享开发笔记,赚取电动螺丝刀】树莓派5串口UART0配置被打赏¥25元 | |
| 【STM32F103ZET6】17:分享在Rtos项目中断管理的使用经验被打赏¥23元 | |
| 【STM32F103ZET6】16:分享在中断中恢复串口任务,遇到的问题被打赏¥31元 | |
| 在FireBeetle2ESP32-C5上实现温度大气压检测及显示被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】SAME51双串口收发配置被打赏¥27元 | |
| Chaos-nano操作系统在手持式VOC检测设备上的应用被打赏¥37元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于在导入第三方库lib时,wchart类型冲突的原因及解决方案被打赏¥30元 | |
我要赚赏金
