23.11.2010, 19:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
int main(void)
{
UARTInit(9600);
while(1) UARTSend(UARTGet());
}
лучше так
|
|
|
|
23.11.2010, 21:17
|
|
Временная регистрация
Регистрация: 26.09.2009
Сообщений: 81
Сказал спасибо: 4
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от nekolex
|
Код:
|
int main(void)
{
UARTInit(9600);
char str[20];
while(1){
*str=UARTGet();
UARTSend(*str);
}
} |
Если так?
|
А зачем нужен массив из 20 char, если используется только 1 байт?
|
|
|
|
23.11.2010, 23:39
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от espectr0
|
А зачем нужен массив из 20 char, если используется только 1 байт?
|
UARTSend - побайтная передача строки из char ее код приведен ранее
|
|
|
|
24.11.2010, 09:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от nekolex
|
UARTSend - побайтная передача строки из char ее код приведен ранее
|
Какой строки?! Где вы строку увидели?
Буквально:
передаем из буфера извлеченный из него по указателю байт,который был принят и помещен в этот буфер по указателю. Никаких действий с указателем не происходит, нет смещения по буферу, нет контроля на достижение конца, ничего нет. Просто помещаем в память и извлекаем из памяти. Так чем это отличается от приведенного в №671? Наличием указателя на одиночную ячейку буфера? А почему не просто через вспомогательную переменную, неявно указанную в примере №671 ?
Последний раз редактировалось ut1wpr; 24.11.2010 в 09:28.
|
|
|
|
24.11.2010, 17:12
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
дело в том, что если использовать вариант из примера #671 выдается предупреждение: "passing argument 1 of 'UARTSend' makes pointer from integer without a cast".
|
|
|
|
24.11.2010, 17:39
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Столкнулся с такой штукой в Uart.h:
void UART_Init(uint32_t baudrate);
Выдает ошибку: " expected ')' before 'baudrate' "
Что не так?
|
|
|
|
24.11.2010, 17:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
А #include ‹stdint.h› или какой там в Вашем компиляторе подключен к Uart.h?
В общем заголовочник поддержки типов С99.
|
|
|
|
24.11.2010, 17:59
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от kison
|
А #include ‹stdint.h› или какой там в Вашем компиляторе подключен к Uart.h?
В общем заголовочник поддержки типов С99.
|
Здесь решилось.
Теперь при вызове UART_Init выдает: undefined reference to `UART_Init'
Последний раз редактировалось nekolex; 24.11.2010 в 18:02.
|
|
|
|
24.11.2010, 18:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от nekolex
|
undefined reference to `UART_Init'
|
А сам Си файл uart.c в проект подключен?
|
|
|
|
24.11.2010, 18:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от nekolex
|
дело в том, что если использовать вариант из примера #671 выдается предупреждение: "passing argument 1 of 'UARTSend' makes pointer from integer without a cast".
|
Строки и указатели здесь ни при чем. Обыкновенное несоответствие типов. Вариант #671 приведен в качестве примера. Уйдите от неявного использования промежуточной переменной с объявлением типа для явноуказанной. Или примените кастинг. Не рекомендую последним увлекаться.
Код:
|
int main(void)
{
UARTInit(9600);
while(1) UARTSend((char)UARTGet());
} |
Или с явным объявлением переменной:
Код:
|
int main(void){
char temp;
UARTInit(9600);
while(1){
temp = UARTGet() & 0xFF;
UARTSend(temp);
}
} |
В обеих случаях компилятор породит одинаковый код, и не будет ворнинга. Не путайте с ошибками - это всего лишь предупреждение.
Последний раз редактировалось ut1wpr; 24.11.2010 в 18:15.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:39.
|
|