Цитата(SSerge @ Mar 1 2015, 16:31)

Какая, собственно, разница в данном конкретном случае?
Да никакой, потому что это регистр передатчика и ему плевать на все биты, кроме 8 младших.
Кстати и явное приведение типов тут не обязательно, компилятор сам это сделает в полном соответствии со стандартом.
сделал вот такой тест
Код
signed char Test(signed char data)
{
return data++;
}
.....................................
Test(200);
компилятор молчит сволочь не ругается. и какие будут 8 младших битов?
Цитата(Сергей Борщ @ Mar 1 2015, 17:18)

А зачем посылать черта функцией
_SendString? И как гарантировать, что черт будет заканчиваться нулем и не будет содержать нулей внутри?
У автора та же проблема - в названии функции ясно говорится о строке, а аргументом является указатель на совершенно другой тип. Отсюда и все это засорение исходников приведением типов. Для отправки строк должна быть функция отправки строк, для отправки черта - функция отправки черта. Они обе могут сводиться к представлению передаваемого объекта в виде массива байтов и использования одной общей функции отправки массива байтов:
Код
void send_string(char const * string)
{
send_raw(string, strlen(string));
}
void send_byte_array(uint8_t const * from, size_t size)
{
send_raw(from, size);
}
void send_devil(devil const * from)
{
send_raw(from, sizeof(*from));
}
void send_raw(void const * from, size_t size)
{
uint8_t const * pSrc = (uint8_t const *)from;
while(size--)
UART_send_byte(*pSrc++);
}
то есть для строк сделать LEUART_Tx(char data) а для черта LEUART_Tx(unsigned char data)?