Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 456

STM32F4 USB CMSIS

30.03.2021, 10:02. Показов 7123. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я понимаю сейчас наверное скажите: "Куда ты полез школьник, иди лучше уроки учи или мамке по дому помоги!" Но я всё же попробую, кто может всё таки кто нибудь писал для него?
Проблема первая не могу попасть в прерывание(
Инициализация
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void usb_init(void)
{
 //Enable clockue gjgfcnm d 
 RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN;
 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; 
 //Port config
 GPIOA->AFR[1] |= GPIO_AFRH_AFRH4_3 | GPIO_AFRH_AFRH4_1;    //PA12 AF10
 GPIOA->AFR[1] |= GPIO_AFRH_AFRH3_3 | GPIO_AFRH_AFRH3_1;  //PA11 AF10
 GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR12 | GPIO_OSPEEDER_OSPEEDR11; //PA12 PA11 Very high speed
 //USB Core init
 while (!(USB_OTG_FS->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL)); // Indicates that the AHB master state machine is in the Idle condition
 USB_OTG_FS->GRSTCTL |= USB_OTG_GRSTCTL_CSRST;  // Core Soft Reset
 while((USB_OTG_FS->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST); //wait
 USB_OTG_FS->GUSBCFG |= USB_OTG_GUSBCFG_FDMOD | USB_OTG_GUSBCFG_PHYSEL | (0x06 << USB_OTG_GUSBCFG_TRDT_Pos); //Force device mode, Full speed, TRDT 6
 USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS; //VBUS sensing disable option
 //USB Dev init
 USB_OTG_DEV->DCFG |= USB_OTG_DCFG_DSPD_1 | USB_OTG_DCFG_DSPD_0; //Full speed   
 //USB EP init
 USB_INEP(0)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;  //NAK
 USB_INEP(0)->DIEPINT  = 0xFB7FU;
 USB_OUTEP(0)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK; //NAK
 USB_OUTEP(0)->DOEPINT  = 0xFB7FU;
 //USB config interrupts
 USB_OTG_FS->GINTSTS = 0xBFFFFFFFU; //Clear any pending interrupts
 USB_OTG_FS->GINTMSK |= USB_OTG_GINTMSK_USBSUSPM | USB_OTG_GINTMSK_USBRST | // Enable interrupts matching to the Device mode ONLY 
                        USB_OTG_GINTMSK_ENUMDNEM | USB_OTG_GINTMSK_IEPINT |
                        USB_OTG_GINTMSK_OEPINT   | USB_OTG_GINTMSK_IISOIXFRM |
                        USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM;
 USB_OTG_FS->GAHBCFG = USB_OTG_GAHBCFG_GINT;
                                     
 NVIC_EnableIRQ(OTG_FS_IRQn);
 //Enable USB
 USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_PWRDWN; //Transceiver active
 USB_OTG_DEV->DCTL = 0; //clear 
}
C++
1
2
3
4
5
6
void OTG_FS_IRQHandler(void)
{
 uint32_t status =  USB_OTG_FS->GINTSTS;
    
    u2.send((uint8_t*)"interrupt\r\n",11);  
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2021, 10:02
Ответы с готовыми решениями:

CMSIS и STM32F4
Имеется Dyscovery c STM32F4 на борту. От SPL решил отказаться и использовать только CMSIS. CMSIS взял из официальной сборки SPL для своей...

Stm32f4 cmsis
как настроить таймер stm32f4 cmsis

stm32f4 cmsis шим
/* * main.c * * Created on: 10 лист. 2019 р. * Author: Ivan */ #include&quot;main.h&quot; volatile unsigned int pauza=0; ...

20
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 456
06.01.2022, 17:57  [ТС]
Студворк — интернет-сервис помощи студентам
дескриптор
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
const uint8_t desc_device[] =
{
 0x12,                       /*bLength */
 0x01U,                      /*bDescriptorType*/
 0x00,                       /*bcdUSB */
 0x02,
 0x02,                       /*bDeviceClass*/
 0x02,                       /*bDeviceSubClass*/
 0x00,                       /*bDeviceProtocol*/
 64U,                        /*bMaxPacketSize*/
 0x83, //LOBYTE(USBD_VID),   /*idVendor*/
 0x04, //HIBYTE(USBD_VID)    /*idVendor*/
 0x40, //LOBYTE(USBD_PID_FS) /*idProduct*/
 0x57, //HIBYTE(USBD_PID_FS) /*idProduct*/
 0x00,                       /*bcdDevice rel. 2.00*/
 0x02,
 0x01U,                      /*Index of manufacturer  string*/
 0x02U,                      /*Index of product string*/
 0x03U,                      /*Index of serial number string*/
 1U                          /*bNumConfigurations*/
};
 
 
const uint8_t desc_config[]=
{
 /* Configuration Descriptor */
 0x09,                                       /* bLength: Configuration Descriptor size */
 0x02U,                                      /* bDescriptorType: Configuration */
 67U,                                        /* wTotalLength:no of returned bytes */
 0x00,
 0x02,                                       /* bNumInterfaces: 2 interface */
 0x01,                                       /* bConfigurationValue: Configuration value */
 0x00,                                       /* iConfiguration: Index of string descriptor describing the configuration */
 0xC0,                                       /* bmAttributes: Bus Powered according to user configuration */
 0x32U,                                      /* MaxPower 100 mA */
 
  /*---------------------------------------------------------------------------*/
 
 /* Interface Descriptor */
 0x09,                                       /* bLength: Interface Descriptor size */
 0x04U,                                      /* bDescriptorType: Interface */
 /* Interface descriptor type */
 0x00,                                       /* bInterfaceNumber: Number of Interface */
 0x00,                                       /* bAlternateSetting: Alternate setting */
 0x01,                                       /* bNumEndpoints: One endpoints used */
 0x02,                                       /* bInterfaceClass: Communication Interface Class */
 0x02,                                       /* bInterfaceSubClass: Abstract Control Model */
 0x01,                                       /* bInterfaceProtocol: Common AT commands */
 0x00,                                       /* iInterface: */
 
 /* Header Functional Descriptor */
 0x05,                                       /* bLength: Endpoint Descriptor size */
 0x24,                                       /* bDescriptorType: CS_INTERFACE */
 0x00,                                       /* bDescriptorSubtype: Header Func Desc */
 0x10,                                       /* bcdCDC: spec release number */
 0x01,
 
 /* Call Management Functional Descriptor */
 0x05,                                       /* bFunctionLength */
 0x24,                                       /* bDescriptorType: CS_INTERFACE */
 0x01,                                       /* bDescriptorSubtype: Call Management Func Desc */
 0x00,                                       /* bmCapabilities: D0+D1 */
 0x01,                                       /* bDataInterface: 1 */
 
 /* ACM Functional Descriptor */
 0x04,                                       /* bFunctionLength */
 0x24,                                       /* bDescriptorType: CS_INTERFACE */
 0x02,                                       /* bDescriptorSubtype: Abstract Control Management desc */
 0x02,                                       /* bmCapabilities */
 
 /* Union Functional Descriptor */
 0x05,                                       /* bFunctionLength */
 0x24,                                       /* bDescriptorType: CS_INTERFACE */
 0x06,                                       /* bDescriptorSubtype: Union func desc */
 0x00,                                       /* bMasterInterface: Communication class interface */
 0x01,                                       /* bSlaveInterface0: Data Class Interface */
 
 /* Endpoint 2 Descriptor */
 0x07,                                       /* bLength: Endpoint Descriptor size */
 0x05U,                                      /* bDescriptorType: Endpoint */
 0x82U,                                      /* bEndpointAddress */
 0x03,                                       /* bmAttributes: Interrupt */
 8U,                                         /* wMaxPacketSize: */
 0x00,
 0x10U,                                      /* bInterval: */
 /*---------------------------------------------------------------------------*/
 
 /* Data class interface descriptor */
 0x09,                                       /* bLength: Endpoint Descriptor size */
 0x04U,                                      /* bDescriptorType: */
 0x01,                                       /* bInterfaceNumber: Number of Interface */
 0x00,                                       /* bAlternateSetting: Alternate setting */
 0x02,                                       /* bNumEndpoints: Two endpoints used */
 0x0A,                                       /* bInterfaceClass: CDC */
 0x00,                                       /* bInterfaceSubClass: */
 0x00,                                       /* bInterfaceProtocol: */
 0x00,                                       /* iInterface: */
 
 /* Endpoint OUT Descriptor */
 0x07,                                       /* bLength: Endpoint Descriptor size */
 0x05U,                                      /* bDescriptorType: Endpoint */
 0x01U,                                      /* bEndpointAddress */
 0x02,                                       /* bmAttributes: Bulk */
 64U,                                        /* wMaxPacketSize: */
 0x00,
 0x00,                                       /* bInterval: ignore for Bulk transfer */
 
 /* Endpoint IN Descriptor */
 0x07,                                       /* bLength: Endpoint Descriptor size */
 0x05U,                                      /* bDescriptorType: Endpoint */
 0x81U,                                      /* bEndpointAddress */
 0x02,                                       /* bmAttributes: Bulk */
 64U,                                        /* wMaxPacketSize: */
 0x00,
 0x00                                        /* bInterval: ignore for Bulk transfer */
};
 
 
const uint8_t desc_lang[] =
{
 0x04, // äëèíà äåñêðèïòîðà
 0x03, // òèï äåñêðèïòîðà - string desc
 0x09, // N áàéò èíäåòèôèêàòîð ÿçûêà
 0x04  /* LangID = 0x0409: U.S. English */
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.01.2022, 17:57

STM32F4 SDIO CMSIS
Может кто писал на регистрах под sd карту? Пока даже не могу пройти инициализацию, и ошибки постоянно разные. void Sdio::init(void) { ...

ADC через CMSIS на STM32F4
Всем привет Пытаюсь запустить ADC через CMSIS на STM32F4 и не идут данные с АЦП в чем может быть проблема? {del} Есть у кого пример...

STM32F4 I2C DMA CMSIS
Парни может кто писал под f4 скиньте рабочий код если не жалко

stm32f4 cmsis задержка для LCD
как организовать задержку на cmsis правильно для LCD.Спецы подскажите аматору?

Использование функций CMSIS-DSP в STM32f4
Приветствую. Проблема такова, написал я программу с использованием DSP функций, входящих в CMSIS, отлаживая в симуляторе Keil. Теперь же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru