打印

UART程序问题

[复制链接]
1459|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuww|  楼主 | 2013-5-15 19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules
#include <string.h>

void main(void)
{int i;
char *r;
char k;
char  *strPtr;// Parameter pointer
unsigned char AT_Buffer[9];
unsigned char Command_AT[3] ={0x41,0x54,0x0D};
UART_2_CmdReset(); // Initialize receiver/cmd
UART_2_EnableInt(); // Enable RX interrupts
Counter8_1_WritePeriod(155); // Set up baud rate generator
Counter8_1_WriteCompareValue(77);
Counter8_1_Start(); // Turn on baud rate generator
UART_2_Start(UART_2_PARITY_NONE); // Enable UART
M8C_EnableGInt ; // Turn on interrupts

LED_1_Start();
LED_2_Start();
LED_1_Off();
LED_2_Off();
UART_2_CPutString("AT");
UART_2_PutCRLF();
strPtr = UART_2_szGetParam();
k=UART_2_cReadChar();
r=strstr(strPtr,"OK");
if(r)
{
LED_1_On();
LED_2_Off();
while(1){
UART_2_CPutString("at");
UART_2_PutCRLF();
}
}
}
再PSOC designer编译时r=strstr(strPtr,"OK");这句会出现什么pointer to_flash char 错误,求高手解答。
沙发
zhanglli| | 2013-5-15 19:16 | 只看该作者
是不是感觉很多C语言的语句比如给char k 赋初值好像都不行?

使用特权

评论回复
板凳
zhuww|  楼主 | 2013-5-15 19:18 | 只看该作者
是啊

使用特权

评论回复
地板
lium| | 2013-5-15 19:20 | 只看该作者
导致这个Error 的原因是"OK"被定义在了ROM中了,这是你用的compiler决定的。

使用特权

评论回复
5
guoyt| | 2013-5-15 19:21 | 只看该作者
strstr 的两个参数必须从ram中取

使用特权

评论回复
6
zhuww|  楼主 | 2013-5-15 19:24 | 只看该作者
咋办

使用特权

评论回复
7
guoyt| | 2013-5-15 19:43 | 只看该作者
解决办法是定义"OK" 到RAM中

使用特权

评论回复
8
guoyt| | 2013-5-15 19:44 | 只看该作者
char ok[]="OK";
...
r=strstr(strPtr,ok);

使用特权

评论回复
9
zhuww|  楼主 | 2013-5-15 19:45 | 只看该作者
谢谢,改了就没错了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

893

主题

8252

帖子

1

粉丝