Будем думать, решать. Без прокси в наше время никуда)
не, это не VPN, это proxy
Разница довольно существенная, там на сайте есть “Вопросы-ответы”, стоит почитать
обратите внимание, это вы открыли цены на IP6. Для того чтобы подключатся к любым сайтам, вам нужно IP4. Там цены немного другие
При этом на самой плате рядом со светодиодом написано PB2, и на АлиЭкспрессе в описании товара тоже написано. Но я тоже это только потом увидел, и у меня разобраться с этим заняло больше 15 минут ![]()
Знаю только, что IPv6 круче IPv4, т.к. 6>4…
Вопрос знатокам!
В Кубе отладил отладку(масло масляное). Вроде фурычит, регистры показывает, а вот такты и время не могу понять где смотреть. Где это искать?
А так же не совсем понятна структура файлов. В какой-нибудь Студии для AVR всё просто: main.h и main.c, к которым подключены avrio.h и куча своих. В Кубе же непонятно что к чему подключено и где объявлено. Обработчики прерываний-то нашёл, но как-то некошерно оттуда писать вызов в свой файл *.c
Важные глобальные дефайны тоже не понятно куда писать чтоб видимость на весь проект была.
Мне пока не нужно было, не искал. Но где-то в отладке должно быть…
А по мне всё как раз понятно. Что не понятного? Две папки Inc и Src.
Так в main же область есть прямо подписанная, что для дефайнов ))
Разобрался с файлами наконец) Всё аналогично, это я через через опу смотрел.
Осталось время найти.
Насколько я знаю только через DWT . По другому вроде нельзя.
по крайне мере нигде нема
Можете в майне или в своем файле просто переопределить …
Прерывания сделаны как weak функции , находятся в файле startup_stm…
например у меня
.......................................................
.weak EXTI2_IRQHandler
.thumb_set EXTI2_IRQHandler,Default_Handler
.weak EXTI3_IRQHandler
.thumb_set EXTI3_IRQHandler,Default_Handler
.weak EXTI4_IRQHandler
.thumb_set EXTI4_IRQHandler,Default_Handler
.weak DMA1_Stream0_IRQHandler
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler
.weak DMA1_Stream1_IRQHandler
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler
.weak DMA1_Stream2_IRQHandler
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler
..............................................................
а я в своем майне использую для тача
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "fatfs.h"
#include "i2c.h"
#include "sdio.h"
#include "spi.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
#include "fsmc.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
//EEPROM
#include "s_var.h"
#include "fonts.h"
#include "stdio.h"
#include "w25qxx.h"
#include "24LC02.h"
#include "GT911.h"
#include "IMAGE.h"
#include "spi_7796.h"
#include "SSD1963.h"
#include "SSD1963_LL.h"
#include "keys.h"
#include "menu.h"
#include "PICTURESSD.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
GT911Touch_TypeDef GT911Touch[5];
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* USER CODE BEGIN 2 */
LCD_Init();
LCD_DrawFullScreen(BLACK);
HAL_Delay(50);
GT911_Init();
W25qxx_Init();
SD_init();
// W25qxx_EraseChip();
__HAL_TIM_CLEAR_FLAG(&htim7, TIM_SR_UIF);
HAL_TIM_Base_Start_IT(&htim7);
NVIC_DisableIRQ(EXTI4_IRQn);
......................................
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
input_sort(profil_f);
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
...............................................
..........................................
/* USER CODE BEGIN 4 */
void EXTI4_IRQHandler(void)
{
// gt911
TouchCount911 = GT911_ReadTouch(>911Touch[0]);
EXTI->PR |= TOUCH_IRQ_Pin;
NVIC_ClearPendingIRQ(EXTI4_IRQn);
my_touch.XX = GT911Touch[0].XCoordinate;
my_touch.YY = GT911Touch[0].YCoordinate;
if ((my_touch.stat == 5) && (TouchCount911 > 0))
{
//my_touch.XX = GT911Touch[0].XCoordinate;
//my_touch.YY = GT911Touch[0].YCoordinate;
my_touch.stat = 6;
NVIC_DisableIRQ(EXTI4_IRQn);
}
}
По мне не удобно, когда все в одном майне… все время листать надо , как в ардуино… поэтому на этапе создания сразу ставлю галку раскидать по файлам и так пользуюсь…
каждый модуль в своем файле/папке… для глобальных переменных дефайнов и структур отдельные файлы … .h .c . Конечно имхо , но мне удобно …
Вон чё! Поняна)
У меня тоже по файлам раскидано обычно, просто тут их по-умолчанию дохера и больше, вот и растерялся)
У самого самый большой с-файл строк 80 наверно.
Это чего за зверь такой?
#define DWT_CYCCNT *(volatile uint32_t*)0xE0001004
#define DWT_CONTROL *(volatile uint32_t*)0xE0001000
#define SCB_DEMCR *(volatile uint32_t*)0xE000EDFC
char str[16] = {0,};
uint32_t count_tic = 0;
SCB_DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;// разрешаем использовать DWT
DWT_CONTROL|= DWT_CTRL_CYCCNTENA_Msk; // включаем счётчик
DWT_CYCCNT = 0;// обнуляем счётчик
// здесь кусок измеряемого участка программы
count_tic = DWT_CYCCNT; // кол-во тактов
snprintf(str, 16, "Takt %lu\n", count_tic);
HAL_UART_Transmit(&huart1, (uint8_t*)str, strlen(str), 1000);
это для cortex m3
[Время выполнения кода в STM32.. | Embedded Systems | VK]
Вот тут платформо-независимое…,
но я сам не проверял…
я сейчас на 4 кортексе - пока не было потребности…
p/s CMSIS соответственно нужны будут библиотеки CMSIS в кубе для Вашего ядра
Вобщем поковыряюсь. Но если вдруг нет средств прям “из коробки”, то это странно. Для меня измерять время и такты на втором месте после просмотра переменных.
Меня тоже удивило отсутствие в HAL делеев менее 1 мс. Надо как то с этим жить ))
У эстэмов есть систик - регистр который тикает независимо ни от чего и ты в любой момент можешь вытащить что там натикало.
HAL_Delay от него же данные получает?
Но чтобы сами тики получить - нужно к регистрам лезть напрямую?
Топая по шагам - тики будут неверные.
Надо точки останова делать и вычислять разность между отрезками…
С dma тоже самое … выстрелит всё что есть за один шаг …
На https://forum.easyelectronics.ru/index.php
Это часто калом называют.
Не надо с этим жить, проще изучить регистры stm32.
Да уж… Надо понимать там куча периферии на разных частотах. В какой-нибудь ххх-Студии для авр эмуляцию запустил и вот:
Но как подсказал @karasik_mk1 , с DWT почти то же самое.

