Stack Pointer do STM32F103

Caros colegas, o velho vonnilmam, passou essa noite acordado tentando entender uma coisa "misteriosa"
Eu estou fazendo um projetinho para um cliente onde tenho os seguintes módulos ativados no STM32F103C8 "Mikroc arm vr 6.0 original":
- Uso das três Uarts "Uart1, 2 e 3", todas com interrupção ativada, para RX (Uso a mesma velocidade para todas elas ou seja 9600bps).
- Uso da i2c, apenas a 1 ativada a outra não esta em uso (não uso interrupção para esse módulo).
Vejam se conseguem me compreender
Tudo funciona aparentemente direitinho como o previsto, porém quando em envio pela TX da uart 2 um dado simples do tipo char (ex. 10), a Uart1 TX fica doida e começa a enviar dados aleatóriamente, os buffers são isolados em variáveis globais (já tentei fazer LOCAL) mas a doidera continua, porém se eu simplesmente paro de enviar dados na TX2, fica tudo OK na TX1...
Eu depois de ficar acordado a noite toda até agora, 10 da manha
Notei que no meu FW tenho ligadas a RX1 (que esta na interrupção), várias rotinas com chamadas (protótipos), no meu caso tenho até 4 chamadas uma dentro da outra (como se dizia em assembler, CALLs um dentro do outro chamando a próxima).
Aí quando eu retiro ou diminuo essas chamadas o problema também some.
Minha pergunta é e peço desculpas pelo texto tão grande!? O STM32F103 possúi limitação de stack pointer? Ou o compilador pode ter essas limitações ou talvez em linguagem C, existe alguma regra quanto a chamadas de protótipos, vou dar um exemplo abaixo para ficar mais claro
void TXSerialUart2(unsigned char x)
{
Uart2_write(x);
}
void TXSerialUart1(unsigned char x) // declarando essa variável "x", é LOCAL né?
{
Uart1_write(x);
TXSerialUart2(x);
}
...Chamada da rotina principal para TXSerialUart1(10); //
Se vocês puderem me ajudar fico muito agradecido, pois meus cabelos devem ter ficado uns 10 fios mais brancos

Eu estou fazendo um projetinho para um cliente onde tenho os seguintes módulos ativados no STM32F103C8 "Mikroc arm vr 6.0 original":
- Uso das três Uarts "Uart1, 2 e 3", todas com interrupção ativada, para RX (Uso a mesma velocidade para todas elas ou seja 9600bps).
- Uso da i2c, apenas a 1 ativada a outra não esta em uso (não uso interrupção para esse módulo).
Vejam se conseguem me compreender

Eu depois de ficar acordado a noite toda até agora, 10 da manha

Aí quando eu retiro ou diminuo essas chamadas o problema também some.
Minha pergunta é e peço desculpas pelo texto tão grande!? O STM32F103 possúi limitação de stack pointer? Ou o compilador pode ter essas limitações ou talvez em linguagem C, existe alguma regra quanto a chamadas de protótipos, vou dar um exemplo abaixo para ficar mais claro

void TXSerialUart2(unsigned char x)
{
Uart2_write(x);
}
void TXSerialUart1(unsigned char x) // declarando essa variável "x", é LOCAL né?

{
Uart1_write(x);
TXSerialUart2(x);
}
...Chamada da rotina principal para TXSerialUart1(10); //
Se vocês puderem me ajudar fico muito agradecido, pois meus cabelos devem ter ficado uns 10 fios mais brancos
