OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7020|回复: 6

uCOS-II 在任务中使用sprintf函数问题。

[复制链接]

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-12-3
在线时间
13 小时
发表于 2015-1-7 10:42:37 | 显示全部楼层 |阅读模式
5金钱
请叫下原子哥及各位大神,小弟用uCOS-II 时在任务中使用sprintf函数问题。程序就跑死了,跑带void HardFault_Handler(void)函数里面堆栈大小设置的也没问题啊,把sprintf注释了运行就没问题,很疑惑。。
[mw_shl_code=c,true]
[mw_shl_code=c,true]#include "ucos_ii.h" #include "stm32f10x.h" #include "led.h" #include "uart.h" #include "stdio.h" static OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE]; static OS_STK task1_stk[TASK1_STK_SIZE]; static OS_STK task2_stk[TASK2_STK_SIZE]; OS_EVENT*msg_key; char *s; INT32U time=0; static void systick_init(void) { RCC_ClocksTypeDef rcc_clocks; RCC_GetClocksFreq(&rcc_clocks); SysTick_Config(rcc_clocks.HCLK_Frequency / OS_TICKS_PER_SEC); } static void task1(void *pdata) { INT8U err; INT8U timeL; pdata=pdata; for (;;) { timeL=(INT16U)OSMboxPend(msg_key,10,&err); USART_SendData(USART2,timeL); while(USART_GetFlagStatus(USART1, USART_FLAG_TC)); led_on(LED_0); OSTimeDlyHMSM(0,0,1,0); led_off(LED_0); OSTimeDlyHMSM(0,0,1,0); } } static void task2(void *pdata) { pdata=pdata; for (;;) { sprintf(s,"%d",1); OSMboxPost(msg_key,s); s++; OSTimeDlyHMSM(0,0,1,0); } } static void startup_task(void *pdata) { #if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr; #endif pdata=pdata; systick_init(); /* Initialize the SysTick. */ OSStatInit(); /* Determine CPU capacity. */ msg_key=OSMboxCreate((void*)0); OS_ENTER_CRITICAL(); OSTaskCreate(task1, (void *)0, &task1_stk[TASK1_STK_SIZE-1], TASK1_PRIO); OSTaskCreate(task2, (void *)0, &task2_stk[TASK2_STK_SIZE-1], TASK2_PRIO); OS_EXIT_CRITICAL(); OSTaskDel(OS_PRIO_SELF); } int main(void) { led_init(); uart_init(9600); OSInit(); OSTaskCreate(startup_task, (void *)0, &startup_task_stk[STARTUP_TASK_STK_SIZE - 1], STARTUP_TASK_PRIO); OSStart(); return 0; } [/mw_shl_code]


[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

你的s没分配内存空间
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-7 10:42:38 | 显示全部楼层
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-1-7 12:00:25 | 显示全部楼层
使用sprintf函数的这个任务的任务堆栈设置为8字节对齐试试
开往春天的手扶拖拉机
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2015-1-7 13:48:24 | 显示全部楼层
推2F...沒給正確位址

寫到不能寫的位址程序就崩潰囉~
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-12-3
在线时间
13 小时
 楼主| 发表于 2015-1-7 15:06:10 | 显示全部楼层
回复【3楼】八度空间:
---------------------------------
哈哈,写程序不小心犯低级错误了,感谢。
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-12-3
在线时间
13 小时
 楼主| 发表于 2015-1-7 15:06:57 | 显示全部楼层
回复【4楼】civic7366:
---------------------------------
感谢,台湾同胞。
回复

使用道具 举报

57

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2013-5-23
在线时间
46 小时
发表于 2015-7-30 14:00:08 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
是不是把TASK2_STK_SIZ 设置为8的倍数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 06:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表