Перейти к содержанию

Рекомендуемые сообщения

хотел уточнить насчёт изменения скорости 2/10мГц.

это скорость с которой может ножка дергаться? Это зависит от внутреннего кварца? А если использовать внешний кварц, тогда как скорость регулировать?

Отправлено с моего Wileyfox Swift через Tapatalk

Там не 2/10МГц, там до 2 или до 10 МГц, и зависит это от частоты тактирования. Т. е. при любом источнике, хоть внутренним хоть внешним, режим FAST (до 10Мгц) заставляет действовать порт без ограничений скорости, а обычный режим вносит замедление переключений. Само собой скорость кратна текущей тактовой частоте. Коэффициент кратности не указан в описалове, тут я без понятия, как то не особо вникал, но можно наверное где то в дебрях их офф. сайта найти.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

В третий пост добавлен четвертый урок.

А также подготовлен он-лайн тест. После просмотра видео вы можете проверить себя как вы усвоили материал.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Конспект к лекции 4.

Тема урока: "Тактовые генераторы"

1. Регистры управления статусом встроенных тактовых генераторов (CLK_ICKR) Internal clock register17d80d4e7ed6.jpg

Address offset: 0x00

Reset value: 0x01

Биты 7 и 6 - зарезервированы

5-й бит:

REGAH - Regulator Active-halt (переключатель Активен - Остановка)

REGAH (rw) Отключает программно внутренний источник питания ядра процессора (используется для понижения энергопотребления)

0: Основной регулятор напряжения ВКЛЮЧЕН, положение Active-halt mode - ON

1: Основной регулятор напряжения ВЫКЛЮЧЕН, положение Active-halt mode - OFF (время пробуждения увеличивается)

LSIRDY - Low speed internal ready (готовность низкоскоростного тактовый генератора)

4-й бит:

LSIRDY (r) Бит готовности низкоскоростного тактового генератора (устанавливается аппаратно)

0: Низкочастотный тактовый генератор НЕ ГОТОВ (LSI clock not ready)

1: Низкочастотный тактовый генератор ГОТОВ (LSI clock ready)

LSIEN- Low speed internal enable (Влючене низкоскоростного тактовый генератора)

3-й бит:LSIEN (rw) Бит включения низкоскоростного тактового генератора (Устанавливается программно или аппаратно если необходим низкочастотный тактовый генератор)

0: Низкочастотный тактовый генератор ВЫКЛЮЧЕН (LSI - off)

1: Низкочастотный тактовый генератор ВКЛЮЧЕН (LSI - On)

2-й бит:FHWU (rw) Быстрое пробуждение из режима "Активен/Активная-остановка"

0: Быстрое пробуждение из режима "Активен/Активная-остановка ОТКЛЮЧЕНА (Halt/Active-halt - off)

1:Быстрое пробуждение из режима "Активен/Активная-остановка ВКЛЮЧЕНА (Halt/Active-halt - on)

HSIRDY- High speed internal ready

1-й бит:HSIRDY(r) Сигнализация о готовности высокочастотного встроенного тактового генератора. (Устанавливается аппаратно)

0: Высокочастотный тактовый генератор НЕ ГОТОВ (HSI clock not ready)

1: Высокочастотный тактовый генератор ГОТОВ (HSI clock ready)

HSIEN- High speed internal enable

0-й бит:HSIEN (rw) Бит включающий встроенный высокочастотный тактовый генератор. (Устанавливается программно или аппаратно если необходим высокочастотный тактовый генератор)

0: Высокочастотный тактовый генератор ВЫКЛЮЧЕН (HSI - off)

1: Высокочастотный тактовый генератор ВКЛЮЧЕН (HSI - on)

2. Регистры управления внешним тактовым генератором (CLK_ECKR) External clock register

655b3c2fe40b.jpg

Address offset: 0x01

Reset value: 0x00

Биты с 7 по 2 - зарезервированы

HSERDY- High speed external enable

1-й бит:HSERDY (r) Готовность высокочастотного внешнего тактового генератора

0: Высокочастотный внешний тактовый генератор НЕ ГОТОВ (HSE clock not ready)

1: Высокочастотный внешний тактовый генератор ГОТОВ (HSE clock ready)

HSEEN- High speed external enable

0-й бит:HSEEN (rw) Разрешение работы высокочастотного внешнего тактового генератора

0: Высокочастотный внешний тактовый генератор ВЫКЛЮЧЕН (HSE clock off)

1: Высокочастотный внешний тактовый генератор ВКЛЮЧЕН (HSE clock on)

3.1 Регистр статуса генератора CLK_CMSR Clock master status register

f65e0f05f5b1.jpg

Address offset:0x03

Reset value: 0xE1

CKM - Clock master status bits

CKM (r) Эти биты устанавливаются и сбрасываются аппаратно.

0xE1 - HSI выбран высокочастотный внутренний тактовый генератор

0xD2 - LSI выбран низкокочастотный внутренний тактовый генератор

0xB4 - HSE выбран внешний высокочастотный тактовый генератор

3.2 Регистр переключения генератора CLK_SWR Clock master swith register

6260df8661a8.jpg

Address offset: 0x04

Reset value: 0xE1

SWI (rw) Эти биты устанавливаются и сбрасываются

0xE1 - HSI выбран высокочастотный внутренний тактовый генератор

0xD2 - LSI выбран низкокочастотный внутренний тактовый генератор

0xB4 - HSE выбран внешний высокочастотный тактовый генератор

пример кода:

const unsigned char HSE=0xb4; //внешний генератор

CLK_SWR=HSE; //записываем новое значение типа генератора

4. Регистр контроля переключения CLK_SWCR Switch control register

551570cc5151.jpg

Address offset: 0x05

Reset value: 0xXX

Биты с 7 по 4 - зарезервированы

SWIF- switch interrupt flag

3-й бит:SWIF (rc_w0) Бит флага прерывания по переключению

0 Переключение не завершено, генератор не готов (Target clock source not ready)

1 Переключение завершено, генератор готов (Target clock source ready)

SWIEN- switch interrupt enable

2-й бит:SWIEN (rw) Разрешение прерывания по переключению

0 Прерывание запрещено (Clock switch interrupt disabled)

1 Прерывание разрешено (Clock switch interrupt enabled)

SWEN- switch enable

1-й бит:SWEN (rw) Бит разрешения переключения

0 Переключение между генераторами запрещено (Disable clock switch execution)

1 Переключение между генераторами разрешено (Enable clock switch execution)

код: CLK_SWCR_SWEN=1; //разрешаем переключение между генераторами

SWBSY- switch busy

0-й бит:SWBSY (rw) Бит сигнализирующий что идет переключение

0 Переключение между генераторами завершено (No clock switch ongoing)

1 Происходит переключение между генераторами (Clock switch ongoing)

Изменено пользователем IDis
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

5. Регистр делителей CLK_CKDIVR Clock divider register

d29906952a92.jpg

Address offset: 0x06

Reset value: 0x18

Биты с 7 по 5 - зарезервированы

4й и 3-й бит:HSIDIV (rw) Задаем предделитель для высокочастотного HSI тактового генератора

00 f HSI = f HSI RC output /1

01 f HSI = f HSI RC output /2

10 f HSI = f HSI RC output /4

11 f HSI = f HSI RC output /8

0й, 1й и 2-й бит:CPUDIV(rw) Задаем предделитель для микропроцессора.

000: f CPU = f MASTER / 1

001: f CPU = f MASTER / 2

010: f CPU = f MASTER / 4

011: f CPU = f MASTER / 8

100: f CPU = f MASTER / 16

101: f CPU = f MASTER / 32

110: f CPU = f MASTER / 64

111: f CPU = f MASTER / 128

6 регистр тактирования переферии CLK_PCKENR1 Peripheral clock gating register

0eaf44de6a3c.jpg

Address offset: 0x07

Reset value: 0xFF

Периферийные устройства генератора тактовых импульсов

0 f MASTER Недоступна для переферии (f MASTER to peripheral disabled)

1 f MASTER Доступна для переферии (f MASTER to peripheral enabled)

PCKEN17 - TIM1

PCKEN16 - TIM3

PCKEN15 - TIM2 / TIM5

PCKEN14 - TIM4 / TIM6

PCKEN13 - UART 1/2/3/4

PCKEN12 - UART 1/2/3/4

PCKEN11 - SPI

PCKEN10 - I2C

7 регистр тактирования переферии CLK_PCKENR2 Peripheral clock gating register

a88dd4d425de.jpg

Address offset: 0x0A

Reset value: 0xFF

Периферийные устройства генератора тактовых импульсов

0 f MASTER Недоступна для переферии (f MASTER to peripheral disabled)

1 f MASTER Доступна для переферии (f MASTER to peripheral enabled)

PCKEN27 - CAN

PCKEN26 - Зарезервирован

PCKEN25 - Зарезервирован

PCKEN24 - Зарезервирован

PCKEN23 - ADC

PCKEN22 - AWU

PCKEN21 - Зарезервирован

PCKEN20 - Зарезервирован

8. регистр безопасности CLK_CSSR Clock security system register

d2f892a2eeb9.jpg

Address offset: 0x08

Reset value: 0x00

Биты с 7 по 4 - зарезервированы

CSSD -Clock security system detection

3-й бит:CSSD (rc_w0) Бит определяющий сбой

0: внешний генератор частоты не обнаружен (CSS is off or no HSE crystal clock disturbance detected.)

1: внешний генератор частоты обнаружен (HSE crystal clock disturbance detected)

CSSDIE -Clock security system detection interrupt enable

2-й бит:CSSDIE(rw) Бит разрешающий прерывания по событию (не обнаружен кварц)

0: Запрещено (Clock security system interrupt disabled)

1: Разрешено (Clock security system interrupt enabled)

CSSDIE -Clock security system detection interrupt enable

1-й бит:AUX (r) Бит состояния встроенного тактового генератора включен/выключен

0: встроенный тактовый генератор выключен(Auxiliary oscillator is off.)

1: Встроенныйтактовый генератор включен на частоте HSI/8 (Auxiliary oscillator (HSI/8) is on and selected as current clock master source)

CSSEN -Clock security system enable

1-й бит:CSSEN(rwo) Бит включающий этот узел безопасности

0: выключен (Clock security system off)

1: включен (Clock security system on)

Изменено пользователем IDis
Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

9.Регистр конфигурации выходной тактовой частоты CLK_CCOR Configurable clock output register

60f3ac171abb.jpg

Address offset: 0x09

Reset value: 0x00

Бит 7 - зарезервирован

CCOBSY: Configurable clock output busy

6-й бит:CCOBSY(r) Бит состояния

0: Тактовый генератор не занят (CCO clock not busy)

1: Тактовый генератор занят (CCO clock busy )

CCORDY: Configurable clock output ready

5-й бит:CCORDY(r) Данный узел осуществил переключение и готов к выдаче тактовой частоты

0: Тактовый генератор не занят (CCO clock not available)

1: Тактовый генератор занят (CCO clock available)

CCOSEL[3:0]: Configurable clock output selection.

с 4й по 1-й бит:CCOSEL(rw) Выбираем частоту которую будем выдавать наружу.

0000 f HSIDIV

0001 f LSI

0010 f HSE

0011 Резерв

0100 f CPU

0101 f CPU /2

0110 f CPU /4

0111 f CPU /8

1000 CPU /16

1001 f CPU /32

1010 f CPU /64

1011 f HSI

1100 f MASTER

1101 f CPU

1110 f CPU

1111 f CPU

c1e04eb44696.jpg

Ручное управление генератором:

690f92e1a20a.jpg

2a15158a73fb.jpg

Вопросы по лекции 4:

- то есть можно устройству использовать частоту 24 МГц а процессор питать от 24МГц / 8 / 128 = 234КГц?

- REGAH - что значит отключает внутренний источник питания ядра процессора? Отключить процессор от питания вообще, или в процессоре есть какая то своя батарейка? За что эта батарейка отвечает?

- у регистра CLK_SWCR бит SWIF что означает запись - rc_w0? read clock..... а w0 что?

- у регистра CLK_CSSR бит CSSEN что означает запись rwo?

- что означает запись в заглавии описания каждого регистра CLK_CKDIVR и им подобным: Address offset: 0x06 и Reset value: 0x18?

- как происходит работа регистра калибровки тактового генератора (CLK_HSITRIMR)?

- что означает 7:0 в таблице регистра CLK_CMSR и CLK_SWR?

- регистр CLK_CMSR указывает на f master?

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Про 24 МГц, нет так для внешнего нельзя. Так можно только для внутреннего. Т. е. 16 000 000/8/128, для внешнего только /128.

Про источник питания ядра. Это было в первом или втором ролике, и это ещё будет более подробно. Питания ядра осуществляется от 1,8В, внутри встроенный стабилизатор напряжения , вот он и отключается.

rc_w0 - обозначение возможных операций над битами, не помню где в документации описаны все, это обозначает что бит устанавливается только аппаратно, а сбрасывается только программно. Т. е. возможна только запись нуля, на всё остальное компилятор будет ругаться.

rw0 - обозначает, что бит может читаться множество раз, но записать его можно только единожды.

Adress offset - физический адрес регистра в памяти микроконтроллера, Reset Value - состояние принимаемое регистром после сброса.

[7:0] - обозначает разрядность регистра - байт, т. е. невозможно побитовое чтение/запись, компилятор будет ругаться.

CLK_CMSR показывает какой из генераторов сейчас используется в качестве тактового для системы.

В принципе все обозначения для каждого бита/регистра типа rc_rw0 описываются прямо в описание, и искать весь перечень таких сокращений не нужно. Можно просто перевести. Но если нужно, я поищу полную таблицу.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

Хотел уточнить по уроку 3 Конфигурация выводов.

Вот у меня есть код, но он не включает светодиод. Почему?

Ведь регистр CR1 если он равен нулю, то он принимает значение - стандартный выход. Но при значении 0, ничего на ножке нет, кроме скачущего напряжения (замерить тостером его невозможно). Тогда что же это за стандартный выход? И в каких случаях его используют?

int main( void )
{
PB_DDR_bit.DDR2=1; // направление - выход
PB_CR1_bit.C12=0; // стандартный выход
PB_CR2_bit.C22=0; // 2МГц
PB_ODR_bit.ODR2=1; // выход включен
return 0;
}

И второй вопрос:

Почему в окне whaсh1

- значения a и b недоступны?

- почему значение с он вообще не показывает?

c191d038d3e7.jpg

Ссылка на комментарий
Поделиться на другие сайты

Потому что включается светодиодом нулём, ну в STM8S-DISCOVERY так по схеме сделано. Да и сам светодиод подключён к PD0. И когда CR1 "0", тогда открытый исток, надо туда "1" для "стандартного выхода".

Не доступны, видимо потому, что объявляются внутри основной функции. Зачем их там объявлять то вообще? Лучше на верх их самый, вон туда где #include. Функция она как бы всегда вызвана, память, занятая этими переменными, никогда не освободится. Вот видимо разработчики среды и не понимали зачем, и закрался баг. Просто не надо внутри основной функции их объявлять, смысла нет. А переменная "с" вообще не объявляется, точнее операция с двумя другими переменными выполняется прям при её объявление, так делать не хорошо.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

все таки не очень понятно, а каких случаях используется регистр CR1 со значением 0? Почему при значении 0 на выходе шалтай болтай с напряжением?

Отправлено с моего Wileyfox Swift через Tapatalk

Ссылка на комментарий
Поделиться на другие сайты

все таки не очень понятно, а каких случаях используется регистр CR1 со значением 0? Почему при значении 0 на выходе шалтай болтай с напряжением?

Отправлено с моего Wileyfox Swift через Tapatalk

Так я же уже пояснял. Например питание микроконтроллера 5В, необходимо подключить низковольтную логику, скажем 1,28В. Включаем этот режим, вешаем подтягивающий резистор к 1,28В, имеем выходной сигнал для низковольтной логики. Шалтай болтай именно потому, что единицы нет, только ноль, единицу нужно внешним резистором задавать. Фактически, когда на выход должна быть подана единица в таком режиме, а резистора нет, вывод и болтается в воздухе, он просто отключён.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

Например питание микроконтроллера 5В, необходимо подключить низковольтную логику, скажем 1,28В. Включаем этот режим, вешаем подтягивающий резистор к 1,28В, имеем выходной сигнал для низковольтной логики. Шалтай болтай именно потому, что единицы нет, только ноль, единицу нужно внешним резистором задавать

Пытался медитировать... но просветления не наступило.

- имеем сигнал.

- на выходе ноль.

Что это за сигнал такой в виде нуля?

Если мы на эту ножку подаем 1.28В тогда почему она считается выходом на не входом?

И как происходит управление низковольтной нагрузкой?

Изменено пользователем IDis
Ссылка на комментарий
Поделиться на другие сайты

Ну собственно контроллер может только к нулю выход подключить, единица(транзистор подтягивающий выход к +питания) отключён. А на выход ты уже сам настраиваешь же.

https://ru.wikipedia.org/wiki/%D0%9A%D0%9C%D0%9E%D0%9F

Вот там на рисуночке верхний транзистор как бы отключён.

Ссылка на комментарий
Поделиться на другие сайты

А как использовать прерывания на выходах? (не через таймер)

Не подскажите как программно реализовать следующее:

- включен светодиод

- Когда на ножке А2 сигнал меняется с 1 на 0

- используем прерывание и выключаем светодиод

Какие регистры для этого используются?

Ссылка на комментарий
Поделиться на другие сайты

Там отдельные регистры в контроллере прерываний есть для настройки прерываний от портов, про это ещё не было уроков.

Т.е. в регистре EXTI_CR1 надо для соответствующего порта биты выставить.

Собственно а для чего прерывание?

Ссылка на комментарий
Поделиться на другие сайты

DOC000954191.jpg

Скоро опубликуют видео с практикой. Там датчик заднего хода - ультразвуковой измеритель расстояния. Есть возможность для творчества. Например его в измеритель уровня переделать. Правда надо датчик HC-SR04 иметь.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

Пытаюсь разобраться сo счетчиком.

- на 15 мин. лекции 4 вы сказали что задаем значение для TIM4_ARR=100; и он дальше сравнивает со значением счетчика, счетчик это TIM4_CNTR . Но вы нигде этот регистр не использовали. Да и в режиме отладки он не показывает значение TIM4_CNTR.

- почему vector =TIM4_OVR_UIF_vector? откуда мы берем TIM4_OVR_UIF_vector?

Изменено пользователем IDis
Ссылка на комментарий
Поделиться на другие сайты

В настройках таймера загружается значение в регистр автозагрузчика TIM4_ARR. Это делается только один раз. И показывает он значение таймера.

Значение векторов прерывания в заголовочном файле в самом низу.

Ссылка на комментарий
Поделиться на другие сайты

#include <iostm8s105c6.h>
void main (void)
{
TIM4_CR1_CEN=1; // включили таймер
TIM4_CR1_ARPE=1; //разрешаем автолоадер
int a=0;
TIM4_ARR=7;
if (TIM4_ARR==TIM4_CNTR)
	 a=3;
else
       a=1;
}

как увидеть чему равен счетчик?

И как мне сосчитать до 7?

почему я не вижу значение а в окне watch?

b724c69a40d1.jpg

Изменено пользователем IDis
Ссылка на комментарий
Поделиться на другие сайты

Объявляй переменные вне основной функции(вне main)

TIM4_ARR и TIM4_CNT сравнивать не надо. Это автоматически происходит. Просто проверяй флаг UIF, когда он становиться равен 1, то произошло событие переполнения счётчика/превышение его значение над регистром ARR.

Если просто для попробовать, то величину ARR побольше сделай, так смотреть удобнее будет.

Т. е. должно быть как то так.

#include <iostm8s105c6.h>

int a=0;

void main (void)

{

TIM4_CR1_CEN=1; // включили таймер

TIM4_CR1_ARPE=1; //разрешаем автолоадер

TIM4_ARR=7;

if (TIM4_SR_UIF==1){

a=3;

TIM4_SR_UIF=0;

}

else {

a=1;

}

}

После if, else, и прочих операторов кавычки ставить надо.

И программу надо зациклить, так она только один раз выполниться. Например так.

#include <iostm8s105c6.h>

int a=0;

void main (void)

{

TIM4_CR1_CEN=1; // включили таймер

TIM4_CR1_ARPE=1; //разрешаем автолоадер

TIM4_ARR=7

loop:

if (TIM4_SR_UIF==1){

a=3;

TIM4_SR_UIF=0;

}

else {

a=1;

}

goto loop;

}

И да, побольше величину в ARR, ну что бы видно было как таймер насчитывает. Так слишком быстро происходит счёт, можно и не увидеть число 7, потому что пока операторы выполняются регистры отладчиком не обновляются, у тебя сейчас всего восемь тактов на таймере до переполнения, не знаю сколько if else выполняется, можешь просто не увидеть. Ну или предделитель задай.

Если надо именно момент увидеть когда таймер стал больше какого то числа, то проверяешь сам регистр счётчика таймера, т. е. так.

loop:

if (TIM4_CNTR>=6){

a=3;

}

else {

a=1;

}

goto loop;

Но опять же учитывай, таймер может считать быстрее, чем выполняются команды.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

Объявляй переменные вне основной функции

То есть все переменные должны быть объявлены глобально?

И это надо делать для всех функций?

И для цикла for такая же ерунда? То есть нельзя написать for (int i; i>0; i++){}?

Я так и не нашел, где можно глянуть значение таймера? Вы в лекции об этом не упоминали.

Ссылка на комментарий
Поделиться на другие сайты

Нет не все конечно. Только те, что в функции main. И в циклах не надо объявлять, это просто нечитаемо.

А значение таймера - регистр TIM4_CNTR. Это собственно и есть сам таймер.

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

Так то, по стандартам языка, можно и в функции main объявлять, но вот не нравиться это среде и отладчику. Но вот в операторе это точно делать не стоит.

Т. е. каждую переменную, ну или массив, отдельной строкой всегда. Всегда в начале функции/файла. Всегда с комментарием.

Именно в начале не от того, что по другому работать не будет. Возможно и будет, просто разбираться в программе будет сложно, если будет иначе.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

Так с STM8S-DISCOVERY или просто на симуляторе? Симулятор не обеспечивает работу периферии.

Ну да на симуляторе, конечно оно и не будет показывать. С самого начала про этого говорилось. Надо "живое" устройство. Это или что то своё, использующие ST-LINK, или STM8S-DISCOVERY.

Он не дорогой, в районе 1000р., в зависимости от места покупки. Очень стоит его купить. Там сразу два устройства - ST-LINK и платка с процессором.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

Возник еще вопрос:

если и процессор и таймер тактируются от одного генератора (HSI)

То интересно, почему значения таймера отличаются от значения тактов процессора.

У процессора прошло 13 тактов а у таймера значение - 24

Что считает процессор понятно, один такт это передача 8 байт информации.

А таймер что считает?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...