中级会员
- 积分
- 275
- 金钱
- 275
- 注册时间
- 2017-12-24
- 在线时间
- 40 小时
|
2金钱
int str_comparison(unsigned char *str, unsigned char* str_ed)
{
int flag = 0;
//unsigned char* buf=str;
do{
if(*str != *str_ed){
flag = 1;
break;
}
str++;
str_ed++;
}
while(*str != '\0');
USART1_send_str("str_comp#");
USART1_send_str(str);
return flag;
}
void usart_task(void *pdata)
{
unsigned char buf[10];
int flag=0;
printf("welcome!!\n");
printf("Send something to STM32F4!\n");
while(1)
{
get(buf);
if(str_comparison(buf,"A")==0)
{
//USART1_send_str("A suspend\n");
OSTaskSuspend(5);
USART1_send_str("suspend#A");
}
else if(str_comparison(buf,"F")==0)
{
//USART1_send_str("F resume\n");
OSTaskResume(5);
USART1_send_str("resume#F");
}
}
}
void test_task(void *pdata)
{
while(1)
{
LED1=!LED1;
delay_ms(300);
}
}
test_task 优先级为5 usart_task优先级为6
问题是 除了第一次接收可以 正常挂起恢复优先级为5任务之外 下一次接收就一直在串口接收任务 控制不了LED灯任务
经测试
第一次接收 正常输出 Asuspend#Astr_comp#A 进得去 OSTaskSuspend(5);或者OSTaskResume(5);
第二次 输出的是 Astr_comp#Astr_comp#A 进不去 OSTaskSuspend(5);或者OSTaskResume(5);
之后几次都是和第二次一样
哪位前辈可以指教一下小弟啊!! |
最佳答案
查看完整内容[请看2#楼]
问题解决啦~~
其实是在 uasrt.c里
我写了 两种格式的接收函数
一种是 接收时要按回车键
一种是不需要
然后 原子的XCOM 里输入回车是接收不了的,不需要回车的版本能在XCOM里正常跑
换了 DNW 输入回车 不需要回车的 两个就都能正常跑啦
(PS: 有需要串口接收输入的吗? 有需要可以留言 人多就开分享帖哈 )
|