keil 调用my_itoa多次后,程序自动HardFault_Handler 错误

代码如下:
int main(void)
{
struct tm time;
uint8_t year[256],mon[256],mday[256],hour[256], min[256],sec[256];

time = Time_GetCalendarTime();//(获得日历时间)

my_itoa(time.tm_year,year,10);

my_itoa(time.tm_mday,mday,10);
my_itoa(time.tm_hour,hour,10);
// my_itoa(time.tm_min,min,10);
// my_itoa(time.tm_sec,sec,10);

}

void my_itoa(int value,uint8_t *string,int radix)//整型转字符串
{

int i=0,j=0;
char tmp[256];

memset(tmp,0,256);

for(i=0;i<32;i++)  

{

tmp[i]=(value%radix)+'0';

value=value/radix;

if(value==0)

break;

}

for(;i>=0;i--)  
{
        string[j] = tmp[i]; 
j++;
    }           
string[j] ='\0';  

}

main 函数中如果调用my_itoa函数两次以上,程序就在调试过程进入HardFault_Handler() 错误。网上找了,我怀疑是函数过界问题,求高手教如何处理。