|
|
 |
Ответов
|
Oct 25 2012, 05:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(ViKo @ Oct 25 2012, 06:35)  Я посмотрел предложенный генератор с помощью LibreOffice. Макросы нужно разрешить. Посмотрел (инициализацию портов)... и удалил. Мне это не нужно. Ну можно вообще на ассемблере писать, или сразу в машинных кодах.... Цитата Используются те же структуры инициализации, что и в библиотеке от ST. И это правильно! Цитата Очень неэффективно. Кого интересует эффективность выполняемого как правило один раз в программе, при ее старте? К тому-же, е надо себя считать умнее компилятора - все там достаточно эффективно.
|
|
|
|
|
Oct 26 2012, 08:03
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Allregia @ Oct 25 2012, 08:59)  Кого интересует эффективность выполняемого как правило один раз в программе, при ее старте? К тому-же, е надо себя считать умнее компилятора - все там достаточно эффективно. Меня. Тупить тоже не надо. Код, пример которого показываю, сочинил не компилятор. CODE void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 00174 { 00175 uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; 00176 uint32_t tmpreg = 0x00, pinmask = 0x00; 00177 /* Check the parameters */ 00178 assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); 00179 assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode)); 00180 assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin)); 00181 00182 /*---------------------------- GPIO Mode Configuration -----------------------*/ 00183 currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F); 00184 if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00) 00185 { 00186 /* Check the parameters */ 00187 assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed)); 00188 /* Output mode */ 00189 currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed; 00190 } 00191 /*---------------------------- GPIO CRL Configuration ------------------------*/ 00192 /* Configure the eight low port pins */ 00193 if (((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00) 00194 { 00195 tmpreg = GPIOx->CRL; 00196 for (pinpos = 0x00; pinpos < 0x08; pinpos++) 00197 { 00198 pos = ((uint32_t)0x01) << pinpos; 00199 /* Get the port pins position */ 00200 currentpin = (GPIO_InitStruct->GPIO_Pin) & pos; 00201 if (currentpin == pos) 00202 { 00203 pos = pinpos << 2; 00204 /* Clear the corresponding low control register bits */ 00205 pinmask = ((uint32_t)0x0F) << pos; 00206 tmpreg &= ~pinmask; 00207 /* Write the mode configuration in the corresponding bits */ 00208 tmpreg |= (currentmode << pos); 00209 /* Reset the corresponding ODR bit */ 00210 if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD) 00211 { 00212 GPIOx->BRR = (((uint32_t)0x01) << pinpos); 00213 } 00214 else 00215 { 00216 /* Set the corresponding ODR bit */ 00217 if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU) 00218 { 00219 GPIOx->BSRR = (((uint32_t)0x01) << pinpos); 00220 } 00221 } 00222 } 00223 } 00224 GPIOx->CRL = tmpreg; 00225 } 00226 /*---------------------------- GPIO CRH Configuration ------------------------*/ 00227 /* Configure the eight high port pins */ 00228 if (GPIO_InitStruct->GPIO_Pin > 0x00FF) 00229 { 00230 tmpreg = GPIOx->CRH; 00231 for (pinpos = 0x00; pinpos < 0x08; pinpos++) 00232 { 00233 pos = (((uint32_t)0x01) << (pinpos + 0x08)); 00234 /* Get the port pins position */ 00235 currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos); 00236 if (currentpin == pos) 00237 { 00238 pos = pinpos << 2; 00239 /* Clear the corresponding high control register bits */ 00240 pinmask = ((uint32_t)0x0F) << pos; 00241 tmpreg &= ~pinmask; 00242 /* Write the mode configuration in the corresponding bits */ 00243 tmpreg |= (currentmode << pos); 00244 /* Reset the corresponding ODR bit */ 00245 if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD) 00246 { 00247 GPIOx->BRR = (((uint32_t)0x01) << (pinpos + 0x08)); 00248 } 00249 /* Set the corresponding ODR bit */ 00250 if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU) 00251 { 00252 GPIOx->BSRR = (((uint32_t)0x01) << (pinpos + 0x08)); 00253 } 00254 } 00255 } 00256 GPIOx->CRH = tmpreg; 00257 } 00258 }
Цитирую помощь из библиотеки. Цитата Then user has the choice to use or not the Peripheral’s Drivers - Case1: application code based on Standard Peripheral’s drivers API (files under Libraries\STM32F10x_StdPeriph_Driver) - Uncomment #define USE_PERIPH_LIBRARY (default) - In stm32f10x_conf.h file, select the peripherals to include their header file - Use Peripheral’s drivers API to build the application; refer to next section for more information. - In addition to the Peripheral’s drivers you can reuse/adapt the rich set of examples available within the Library to speed your development, this allow you to started within few hours. Refer to the complete list of available examples - Case2: application code based on Peripheral’s registers direct access - Comment #define USE_PERIPH_LIBRARY - Use Peripheral’s registers structure and bits definition available within stm32f10x.h to build the application Я пошел вторым путем.
|
|
|
|
|
Oct 26 2012, 15:01
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(ViKo @ Oct 26 2012, 10:03)  Меня. Это ради бога. Просто всегда надо иметь ввиду, что "проблемы индейцев, шерифа не волнуют". Цитата Тупить тоже не надо. Код, пример которого показываю, сочинил не компилятор. Это не код, это исходный текст. Код - это то. во что его компилятор превратит. И ничего особо страшного, я там не увидел.
|
|
|
|
|
Oct 26 2012, 17:58
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Allregia @ Oct 26 2012, 18:01)  Это не код, это исходный текст. Код - это то. во что его компилятор превратит. Пусть будет "текст"... Цитата И ничего особо страшного, я там не увидел. Это я уже понял... А вот как сделано у меня. Код ;;;223 GPIO_PORTL_CFG(A, AFO_PP50, IN_PD_PU, AFO_PP50, GPO_OD50, IN_PD_PU, AFO_PP10, AFO_PP10, IN_PD_PU); 0000ae 49d8 LDR r1,|L1.1040| 0000b0 48d6 LDR r0,|L1.1036| 0000b2 6008 STR r0,[r1,#0] ;;;224 GPIO_PORTH_CFG(A, IN_FLOAT, IN_FLOAT, IN_FLOAT, IN_FLOAT, IN_FLOAT, IN_PD_PU, AFO_PP10, AFO_PP50); 0000b4 48d6 LDR r0,|L1.1040| 0000b6 49d7 LDR r1,|L1.1044| 0000b8 1d00 ADDS r0,r0,#4 0000ba 6001 STR r1,[r0,#0] Не пугает?
|
|
|
|
Сообщений в этой теме
aleks-falcon Генератор начального кода для STM32F4хх Oct 21 2012, 07:16 SyncLair Я так понимаю в OO я этим не смогу пользоваться ? ... Oct 21 2012, 10:08 izerg Чем эта программа лучше того что дают сами ST?
Ек... Oct 21 2012, 11:23  Aner Цитата(izerg @ Oct 21 2012, 14:23) Чем эт... Oct 21 2012, 18:50 Allregia Цитата(aleks-falcon @ Oct 21 2012, 09... Oct 21 2012, 16:45 Boriska Отличная штука получилась. На мой взгляд, очень по... Oct 22 2012, 10:07 ViKo А почему GRIO, а не GPIO? Oct 22 2012, 10:24 aleks-falcon Опечатка. Исправим. Oct 22 2012, 14:51 kolobok0 Цитата(aleks-falcon @ Oct 21 2012, 11... Oct 23 2012, 09:50 aleks-falcon Новый файл с исправлениями. Oct 23 2012, 17:58 Rash а не затруднит ли выложить в версиях офиса с расши... Oct 24 2012, 06:54 aleks-falcon Цитата(Rash @ Oct 24 2012, 10:54) а не за... Oct 24 2012, 14:54  Allregia Цитата(aleks-falcon @ Oct 24 2012, 16... Oct 24 2012, 19:14 Aner Не факт. Oct 24 2012, 20:08 vlad_new Уменя то же не фурычит. Говорит офис старый стоит.... Oct 24 2012, 22:18 Aner не визут ... и правильно! - сырые они. Юзайте ... Oct 24 2012, 22:31     andries5 Цитата(ViKo @ Oct 26 2012, 20:58) Не пуга... Oct 26 2012, 19:24      ViKo Цитата(andries5 @ Oct 26 2012, 22:24) Пуг... Oct 27 2012, 06:27       andries5 Цитата(ViKo @ Oct 27 2012, 09:27) По-преж... Oct 27 2012, 07:08 KRS Цитата(ViKo @ Oct 25 2012, 08:35) Использ... Oct 26 2012, 19:42  AHTOXA Цитата(KRS @ Oct 27 2012, 01:42) А сейчас... Oct 26 2012, 21:01   KRS Цитата(AHTOXA @ Oct 27 2012, 01:01) А мож... Oct 26 2012, 21:30    AHTOXA Цитата(KRS @ Oct 27 2012, 03:30)
Спасибо... Oct 26 2012, 23:18 KARLSON А мне понравилась)
Хочется как всегда большего, дл... Oct 25 2012, 04:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|