Микроконтроллеры

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Микроконтроллеры » STM32 » UART


UART

Сообщений 91 страница 98 из 98

91

CERGEI написал(а):

Можно показать где не получается? Как ты это делаешь?

Код:
char str_[6] = "qwerty";
char *s;
s = &str_[0];
while(s != '\0')
{
     USART_trans(*s);
     s++;
}

Вот в таком виде у меня все получилось ). Решил еще раз перечитать K&R, написать код, и если не получится отправлю то что есть. Оказалось все получилось, но вот тут: USART_trans(*s) вместо *s я написал просто s. При отладке увидел что отправляется адрес, а не содержимое, подправил и вуаля, радости моей не было предела.

Я проще делал: создавал структуру, привязывал указатель и потом с помощью -> работаешь с указателем или напрямую к структуре через точку.

Если бы пример кода увидеть, мне было бы проще понять ).

valik , значит не надо инет и Кернигана читать )

А вот тут осмелюсь не согласиться. Все ответы пока что я находил в этой книге, пусть не сразу, но тем не менее.

Ну и начинать программировать лучше на компе, а не на мк

А я и начал программировать на компе еще в школе. Сначала Бейсик, потом Паскаль. Дошел до Асемблера ... и тупик. Жил на севере информация доходила туго, познакомился с начальником АСУ в НГДУ в надежде что он меня толкнет, а он наоборот меня отговорил. Вот и отложил, пока. Лет шесть назад вернулся. А когда   начал программировать мк стал понимать некоторые вещи в компе. Для меня комп и мк идут параллельно.

Изучать ради того чтобы изучать вообще нет смысла, есть смысл изучать чтобы что-то делать

Согласен. Вот и изучаю чтобы делать. Непонятки у меня с охлаждением тосола и клапаном ЕГР. Вот и хочу посмотреть что у меня и как.
Спасибо за участие, за ссылки.

92

while(s != '\0')
Тут у тебя идет проверка адреса с ‘\0’  ?
Не вижу преобразования адреса в переменную.

Управление двигателем делаете?

93

Управление двигателем делаете?

Хотя бы посмотреть, для начала. У меня на машине ЭБУ ругается на ЕГР. Подозреваю электрику. Вот и хочу подойти к этому с МК. Ну и управление тоже, в перспективе.

Тут у тебя идет проверка адреса с ‘\0’  ?

Если честно до конца ещё не осмыслил. Я думал что проверяется символ.

94

valik написал(а):

Если честно до конца ещё не осмыслил. Я думал что проверяется символ.


сравнение идет не с символом,а с адресом и будет всегда истина и цикл...
Вот описано с указателями https://prog-cpp.ru/c-pointers/

Позже пример со структурой,они к тому же сделаны при обращении к регистров в стм cmsis.
пример типа такого USART1->BRR = 48000000 / 115200;

95

valik написал(а):

А вот тут осмелюсь не согласиться. Все ответы пока что я находил в этой книге, пусть не сразу, но тем не менее.

Вот поэтому я обычно советов и не даю, не знаю, что в этот раз растащило )
Верующим советовать бесполезно - если факты противоречат теории, то тем хуже для фактов
Если в этой книге есть все ответы, то почему ты задаёшь вопросы?

96

Если в этой книге есть все ответы, то почему ты задаёшь вопросы?

Все ответы пока что я находил в этой книге, пусть не сразу

Вот описано с указателями https://prog-cpp.ru/c-pointers/

Отсюда, если я правильно понимаю:

Код:
char str_[6] = "qwerty";
char *s;
s = &str_[0];//здесь указателю s присваивается начальный адрес str_ т.е. именно адрес 'q', а не содержимое
while(s != '\0')//здесь надо писать (*s != '\0')
{
     USART_trans(*s);//здесь понятно
     s++;//здесь увеличивается на единицу адрес, именно адрес.
}

Теперь:
если написано (в референс мануал) 0x4800 0000 - 0x4800 03FF 1KB GPIOA, то в диапазоне адресов 0x4800 0000 - 0x4800 03FF находятся регистры GPIO (MODER, OTYPER и т.д.)
И если:
GPIO_REGS[0x03FE байт]
*s
то:
s=&GPIO_REGS[0]//здесь присвоится адрес регистра GPIO_MODER т.е. 0x4800 0000
*s//а здесь будет содержимое регистра GPIO_MODER
Я правильно понял?

97

Вы в чем работаете ? там отладчик есть?  Почитав и попробовав в отладчике много вопросов сами собой отпадут.
Когда начинал программить ломился на форум спрашивая пустяковый вопрос,потом понял что нужно просто не спешить и пробовать .

Вы так уперлись в указатели, вам это так сильно нужно ? указатели удобно с большими массивами,да и можно еще подключить DMA/

98

Почитав и попробовав в отладчике много вопросов сами собой отпадут.

Согласен, про отладчик что-то я совсем забыл.
Вобщем я разобрался во всем что спрашивал.
Спасибо всем за помощь, особенно CERGEI-ю


Вы здесь » Микроконтроллеры » STM32 » UART