|
Íàó÷èòå êðàñèâî äåðãàòü íîæêàìè STM32 |
|
|
|
Jul 6 2016, 15:40
|
Ìåñòíûé
  
Ãðóïïà: Ó÷àñòíèê
Ñîîáùåíèé: 491
Ðåãèñòðàöèÿ: 18-05-11
Ïîëüçîâàòåëü ¹: 65 102

|
Çäðàâñòâóéòå! Ó ìåíÿ íà ïëàòå ïîëíî ðàçíûõ ñèãíàëîâ óïðàâëåíèÿ îò STM32F429.  ïðîãðàììå íóæíî èìè âñåìè ìàíèïóëèðîâàòü. Èñïîëüçîâàòü ñòàíäàðòíûå ôóíêöèè HAL íåóäîáíî, ïðè íàïèñàíèè ïðîãðàììû ïðèäåòñÿ ÷àñòî îòâëåêàòüñÿ íà ïëàòó, ÷òîáû ïîñìîòðåòü, ãäå íîæêè ðåàëüíî ðàñïîëîæåíû. Äàæå åñëè äåôàéíîì ïðèñâîèòü èìÿ êàêîìó òî âûâîäó, íåïîíÿòíî íà êàêîì îí ïîðòå - íàäî ñìîòðåòü ïëàòó. Êîä HAL_GPIO_WritePin(GPIOA,DAC_RESET,GPIO_PIN_SET); Êîëëåãà îáîðà÷èâàåò òàêèå âåùè â ôóíêöèè Êîä void gpioDACRESET(void) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); } Íî ýòî òîæå íå äåëî. Ïîäñêàæèòå, êàê âû ðåøàåòå òàêèå ïðîáëåìû?
|
|
|
|
|
 |
Îòâåòîâ
|
Jul 8 2016, 09:33
|
Ìåñòíûé
  
Ãðóïïà: Ó÷àñòíèê
Ñîîáùåíèé: 491
Ðåãèñòðàöèÿ: 18-05-11
Ïîëüçîâàòåëü ¹: 65 102

|
Öèòàòà(jcxz @ Jul 8 2016, 00:50)  Æåñòü êàêàÿ.... Îòêðîéòå ó÷åáíèê ïî ñè! Ìàêðîñ - ýòî íå ôóíêöèÿ: #define SET(GPIOx, GPIO_Pin) ... Èçâèíèòå, ÿ ìàêðîñàìè íèêîãäà íå ïîëüçîâàëñÿ, ïðîñòî ó turnon áûëî íàïèñàíî gpioSet(GPIO_TypeDef* GPIOx, PIN_TYPE pin, uint8_t state), ïîýòîìó ÿ òîæå íà÷àë òèïû âñòàâëÿòü.  îáùåì, ñäåëàë òàê Êîä // Òåñòîâûå òî÷êè #define TEST_X1 GPIOC,GPIO_PIN_14 #define TEST_X2 GPIOG,GPIO_PIN_12 #define TEST_X3 GPIOG,GPIO_PIN_13
#define SET(port_pin) HAL_GPIO_WritePin(port_pin,GPIO_PIN_SET) #define RESET(port_pin) HAL_GPIO_WritePin(port_pin,GPIO_PIN_RESET) #define TOGGLE(port_pin) HAL_GPIO_TogglePin(port_pin)
//âûçîâ TOGGLE(TEST_X1); SET(TEST_X2); RESET(TEST_X3);
|
|
|
|
|
Jul 8 2016, 11:20
|
Ãóðó
     
Ãðóïïà: Ñâîé
Ñîîáùåíèé: 5 228
Ðåãèñòðàöèÿ: 3-07-08
Èç: Îìñê
Ïîëüçîâàòåëü ¹: 38 713

|
Âîò òåïåðü óæå ëó÷øå. Ó ìåíÿ â ïðîåêòàõ ïðèìåðíî òàêæå, òîëüêî ïèí ÿ îïðåäåëÿþ êîðî÷å: #define PIN_SSP1_SCLK F, 4 #define PIN_SSP1_TX 1, 4 #define PIN_SSP1_RX 1, 3 #define PIN_LCD_LED 6, 9 Åñëè íóæíî, ïîòîì ê íèì ìîæíî ïðèêëåèòü íåîáõîäèìûå ïðåôèêñû/ñóôôèêñû (òèïà GPIO): GPIO##port âíóòðè ìàêðîñîâ Ïîäîáíî: #define SET_(port, pin) GPIO##port, GPIO_PIN_##pin #define SET(port_pin) SET_(port_pin) È íå ïîëüçóþñü íèêàêèìè HAL-àìè, à ïðÿìî âíóòðè ýòèõ ìàêðîñîâ îáðàùàþñü ê ðåãèñòðàì GPIO.
|
|
|
|
|
Jul 8 2016, 12:05
|

íåîòÿãîù¸ííûé çëîì
     
Ãðóïïà: Ñâîé
Ñîîáùåíèé: 2 746
Ðåãèñòðàöèÿ: 31-01-08
Èç: Ñàíêò-Ïåòåðáóðã
Ïîëüçîâàòåëü ¹: 34 643

|
Öèòàòà(jcxz @ Jul 8 2016, 14:20)  òîëüêî ïèí ÿ îïðåäåëÿþ êîðî÷å: È çðÿ. Âû ëèøàåòå ñåáÿ òàêèõ áëàã êàê: Êîä pin_init(PIN_RTC_SELECT); ... pin_drive(PIN_RTC_SELECT, 1); // do something pin_drive(PIN_RTC_SELECT, 0); Êàê âèäèòå, ñîâñåì íå íàäî çàïàðèâàòüñÿ íè î èíèöèàëèçàöèè, íî î àêòèâíîì óðîâíå.
--------------------
“Áóäüòå âíèìàòåëüíû ê ñâîèì ìûñëÿì - îíè íà÷àëî ïîñòóïêîâ” (Ëàî-Öçû)
|
|
|
|
|
Jul 8 2016, 16:44
|
Ãóðó
     
Ãðóïïà: Ñâîé
Ñîîáùåíèé: 5 228
Ðåãèñòðàöèÿ: 3-07-08
Èç: Îìñê
Ïîëüçîâàòåëü ¹: 38 713

|
Öèòàòà(demiurg_spb @ Jul 8 2016, 18:05)  È çðÿ. Âû ëèøàåòå ñåáÿ òàêèõ áëàã êàê: Íå ïîíÿë ÷åãî èìåííî ÿ ëèøàþñü.... Èíèöèàëèçàöèÿ ïèíîâ ó ìåíÿ äåëàåòñÿ ïðèìåðíî òàê: Êîä //Ðàñïðåäåëåíèå SSI-ïîðòîâ #define nSSI_hsdc 1 //íîìåð SSI äëÿ ADE.HSDC #define nSSI_storage 3 //íîìåð SSI äëÿ FRAM, DFLASH0, DFLASH1 (ñèñòåìà õðàíåíèÿ) #define PIN_FRAM_CS F, 2 //CS äëÿ ÷èïà FRAM #define PIN_ADE_IRQ0 P, 0 //ïðåðûâàíèå 0 îò ADE //Åñëè ñêîïîì èíèòÿòñÿ íåñêîëüêî ïèíîâ: static TPinSel const t_iocon[] = { PINSEL(PIN_FRAM_CS, GPIO, SL, 12mA), PINSEL(PIN_ADE_IRQ0, GPIO, PU); PINSEL(concat(PIN_SSI, nSSI_storage, _MOSI), concat(SSI, nSSI_storage, _XDAT0), PD, SL, 12mA), PINSEL(concat(PIN_SSI, nSSI_storage, _MISO), concat(SSI, nSSI_storage, _XDAT1), PD, SL, 12mA), ... }; PinSelN(t_iocon); //Åñëè ïî îäíîìó ïèíó: PinSel1(PIN_FRAM_CS, GPIO, SL, 12mA); PinSel1(PIN_ADE_IRQ0, GPIO, PU), PinSel1(concat(PIN_SSI, nSSI_storage, _MOSI), concat(SSI, nSSI_storage, _XDAT0), PD, SL, 12mA); PinSel1(concat(PIN_SSI, nSSI_storage, _MISO), concat(SSI, nSSI_storage, _XDAT1), PD, SL, 12mA); ...  ñïèñêå àðãóìåíòîâ ìàêðîñîâ PINSEL è PinSel1 - îïöèè äîñòóïíûå äëÿ äàííîãî ïèíà (ïîäòÿæêà: PU èëè PD; ôèëüòð: SL; ìàêñ.òîê: 2ma, 4ma, 8ma, 12ma, 18ma... è ò.ï.). Ïåðâûé àðãóìåíò â ñïèñêå - èìÿ ïèíà (çàäàííîå define), âòîðîé - ôóíêöèÿ (GPIO èëè îäíà èç ñïåö.ôóíêöèé äîñòóïíûõ íà ýòîì ïèíå), äàëåå - îïöèîíàëüíûé ñïèñîê îïöèé ïèíà ïðîèçâîëüíîé äëèíû. PinSel1 è PinSelN êîíôèãóðÿò êàê îïöèè ïèíà(-îâ) òèïà pullup, pulldown, opendrain è ò.ï., òàê è ïðîãðàììèðóþò ìóëüòèïëåêñîð ïèíîâ íà íóæíóþ ôóíêöèþ. Çäåñü ÿ ïðèâ¸ë ïðèìåðû äëÿ Tiva, íî â äðóãèõ ïðîåêòàõ íà äðóãèõ ÌÊ ó ìåíÿ îðãàíèçîâàíî ïîäîáíûì îáðàçîì, òîëüêî ñïèñîê îïöèé ïèíîâ äðóãîé. È åñòü êó÷êà ìàêðîñîâ òèïà Pset(PIN_...), Pclr(PIN_...), Pval(PIN_...), Pin(PIN_...), Pout(PIN_...) è ò.ï. Òàêèå èìåíà ìàêðîñîâ ó ìåíÿ òîæå îäèíàêîâûå äëÿ ðàçíûõ ïðîåêòîâ íà ðàçíûõ ÌÊ, òîëüêî ðåàëèçàöèÿ âíóòðè ðàçíàÿ, çàâèñÿùàÿ îò ïåðèôåðèè. È ñîâñåì íå çàïàðèâàþñü î èíèöèàëèçàöèè è ò.ï.  Ïðè äîáàâëåíèè íîâîãî ïèíà ïðîñòî äîáàâëÿþ åù¸ îäíó çàïèñü ñ îïèñàíèåì íåîáõîäèìûõ åãî îïöèé. È î÷åíü ëåãêî ïåðåíàçíà÷àòü ïèíû, ìåíÿòü íàçíà÷åíèå ïîðòîâ (UART, SPI, ...).
|
|
|
|
|
Jul 8 2016, 20:00
|

íåîòÿãîù¸ííûé çëîì
     
Ãðóïïà: Ñâîé
Ñîîáùåíèé: 2 746
Ðåãèñòðàöèÿ: 31-01-08
Èç: Ñàíêò-Ïåòåðáóðã
Ïîëüçîâàòåëü ¹: 34 643

|
Öèòàòà(jcxz @ Jul 8 2016, 19:44)  È ñîâñåì íå çàïàðèâàþñü î èíèöèàëèçàöèè è ò.ï.  Íå óâèäåë ó âàñ, ãäå îïðåäåëÿåòñÿ àêòèâíûé óðîâåíü H èëè L è òî, ÷òî âû ïðèâåëè, íå âûãëÿäèò äëÿ ìåíÿ ðàçóìíûì. Åñòü äðàéâåð ÷åãî áû òî íè áûëî è èìåííî îí â ñâîåé ôóíêöèè driver_init() âûçûâàåò pin_init(PIN_NAME) äëÿ ñâîèõ ëèíèé ââîäà-âûâîäà áåç êàêèõ ëèáî äîïîëíèòåëüíûõ àðãóìåíòîâ è ä¸ðãàåò íîãàìè íà ñâî¸ óñìîòðåíèå. Ñìûñë àáñòðàêöèè èìåííî â ýòîì! À ó âàñ êó÷à ñîâåðøåííî ëèøíèõ áóêîâ òàì, ãäå èõ áûòü íå äîëæíî. ÃÎÐÀÇÄÎ ðàçóìíåå â îäíîé ñòðîêå çàäåôàéíèòü âñ¸ ñðàçó: è íîìåð ïèíà, è ïîðò, è àêòèâíûé óðîâåíü, è âñå ðåæèìû ðàáîòû ïîðòà, è ðåìàïû, à íå ðàçìàçûâàòü ñîïëè ïî êîäó. Ïðèìåð äëÿ STM32F37x Êîä #define PIN_BTN_USER A,0,H,REMAP_NONE,INPUT_PULL_DOWN,SPEED_NONE #define PIN_UART2_RTS A,1,H,REMAP_NONE,OUTPUT_PUSH_PULL,SPEED_2MHZ // # software_RTS #define PIN_UART2_TX A,2,L,REMAP_AF07,OUTPUT_PUSH_PULL,SPEED_2MHZ // # #define PIN_UART2_RX A,3,L,REMAP_AF07,INPUT_PULL_UP,SPEED_NONE // #
#define PIN_LAMP_BLUE E,12,H,REMAP_NONE,OUTPUT_PUSH_PULL,SPEED_2MHZ #define PIN_LAMP_RED E,13,H,REMAP_NONE,OUTPUT_PUSH_PULL,SPEED_2MHZ
pin_init(PIN_LAMP_RED);
for(;;) delay_ms(500), pin_toggle(PIN_LAMP_RED); Âû ëèøàåòåñü ïðîçðà÷íîñòè è óäîáñòâà îïèñàíèÿ òàðãåòà: îäíà íîãà - îäíà ñòðîêà è ÍÈÊÀÊÈÕ çàâÿçîê áîëåå. Äàæå åñëè âû, íàïðèìåð, ïîñòàâèëè èíâåðòîð â öåïè ãäå åãî â ïðîøëîé ïëàòå íå áûëî, òî ÍÈ×ÅÃÎ â êîäå ìåíÿòü íå íàäî. Çàìåòüòå, èìåííî òàê âûõîäèò ïîëíîñòüþ àáñòðàãèðîâàòüñÿ îò òàðãåòà è â ñìûñëå ñõåìîòåõíèêè ïëàòû, è â ñìûñëå òèïà MCU: õîòèòå AVR, õîòèòå STM32, õîòèòå ÷¸ðòà â ñòóïå. ÍÈ îäèí âûñîêîóðîâíåâûé äðàéâåð ïàò÷èòü íå ïðèä¸òñÿ âîâñå. Ñîçäàë íîâîå îïèñàíèå òàðãåòà lowlevel333.h è â ïóòü, íå ìåíÿÿ â ïðîåêòå íè îäíîé ñòðî÷êè. Ïðåäâîñõèùàÿ âàøè ïîïûòêè ñêàçàòü, ÷òî ó ìåíÿ, ìîë, òîæå òîëüêî îäèí ôàéë îïèñàíèÿ... Òîæå, äà íå ñîâñåì - âû ðåøèëè ëèøü ïîëîâèíó çàäà÷è è òó íå ñàìûì êðàñèâûì ñïîñîáîì. Ó êàæäîãî ñâî¸ ÷óâñòâî ïðåêðàñíîãî è ÿ íå õî÷ó âàñ îáèäåòü, íî ìíå íåðåäêî ñìåøíî è ãðóñòíî ÷èòàòü âàøè áåçàïåëëÿöèîííûå ïîñòû, â êîòîðûõ, íàäî ïðèçíàòü, ÷àñòî ìíîãî ïðàâèëüíûõ ìûñëåé... Öèòàòà(arhiv6 @ Jul 8 2016, 19:54)  Íå èíòåðåñíî ñìîòðåòü. Ñâî¸ óæå äàâíî íàïèñàíî. Íî íà ïåðâûé âçãëÿä íå ïîíðàâèëàñü íîòàöèÿ ìàêðîñîâ. Âû íå ó÷èòûâàåòå íåêîòîðûå âåñüìà îïðàâäàííûå ðåêîìåíäàöèè, êàê òî: åñëè ïîâåäåíèå ìàêðîñà íåîòëè÷èìî îò ïîâåäåíèÿ ôóíêöèè, ýòîò ìàêðîñ äîëæåí áûòü íàçâàí ñ èñïîëüçîâàíèåì ñòðî÷íûõ, à íå ÇÀÃËÀÂÍÛÕ áóêâ, îò êîòîðûõ ðÿáèò â ãëàçàõ. Ïëþñ âûáðàíû íå ñàìûå óäà÷íûå èìåíà HIGH, LOW - H,L äîñòàòî÷íî íà 100%. PIN_CONFIGURATION - î÷óìåòü êàê ìíîãî áóêâ!!! pin_init, pin_setup, pin_cfg - ýòî ñèíîíèìû íå ñêðûâàþùèå ñìûñëà ïðîèñõîäÿùåãî.  ýòîì êëþ÷å, äà è äðóãèõ íàïðàâëåíèÿõ åñòü êóäà ðàñòè... ×òîáû ñòàòü ïðîôè íèêîãäà íå ñòîèò ïðåíåáðåãàòü ÷òåíèåì ïðîôåññèîíàëüíîé ëèòåðàòóðû - òàì çà÷àñòóþ åñòü ÷åìó ïîó÷èòüñÿ. À ïðî òî, êàê ïðàâèëüíî âûáèðàòü íàçâàíèÿ ïåðåìåííûì è ôóíêöèÿì, âîîáùå â áóêâàðÿõ ïèøóò))) 2ALL: ïåðå÷èòàéòå íàçâàíèå ýòîãî òîïèêà åù¸ ðàç, ïðåæäå ÷åì ñþäà íàïèñàòü.
--------------------
“Áóäüòå âíèìàòåëüíû ê ñâîèì ìûñëÿì - îíè íà÷àëî ïîñòóïêîâ” (Ëàî-Öçû)
|
|
|
|
|
Jul 8 2016, 21:42
|
Ãóðó
     
Ãðóïïà: Ñâîé
Ñîîáùåíèé: 5 228
Ðåãèñòðàöèÿ: 3-07-08
Èç: Îìñê
Ïîëüçîâàòåëü ¹: 38 713

|
Öèòàòà(demiurg_spb @ Jul 9 2016, 02:00)  ÃÎÐÀÇÄÎ ðàçóìíåå â îäíîé ñòðîêå çàäåôàéíèòü âñ¸ ñðàçó: è íîìåð ïèíà, è ïîðò, è àêòèâíûé óðîâåíü, è âñå ðåæèìû ðàáîòû ïîðòà, è ðåìàïû, à íå ðàçìàçûâàòü ñîïëè ïî êîäó. Ó ìåíÿ êàê ðàç âñå ðåæèìû ïèíà îäíîé ñòðîêîé è çàäàþòñÿ. Íî åãî íîìåð è íîìåð ïîðòà íà êîòîðîì îí íàõîäèòñÿ (èëè ïðîñòî íîìåð íîãè êîðïóñà) çàäà¸òñÿ îòäåëüíî. Ìíå òàê óäîáíåå, òàê êàê ó íàñ îáû÷íî ðàçðàáàòûâàåòñÿ íå îäíî óñòðîéñòâî, à ëèíåéêà óñòðîéñòâ ñ ïîäîáíûì ôóíêöèîíàëîì è, ñîîòâåòñòâåííî, ñ òàêèìè-æå ïî÷òè íîãàìè, íî ñ ðàçíîé ñõåìîé, òàê ÷òî â îäíîì èç óñòðîéñòâ ëèíåéêè ýòîò âûâîä íàõîäèòñÿ íà îäíîé íîãå, à â äðóãîì - íà äðóãîé. È ôàéëû ðàáîòû ñ ïèíàìè - îáùèå, ñâîé òîëüêî äëÿ êàæäîãî êîíêðåòíîãî óñòðîéñòâà, ôàéë îïèñàíèÿ ðàñïðåäåëåíèÿ ïèíîâ ïî ðåàëüíûì íîãàì ÷èïà. Òàê ÷òî ñòðîêè ðåæèìîâ äëÿ PIN_... - îáùèå äëÿ âñåé ëèíåéêè â îäíîì ôàéëå, à âîò ôàéëû ñ ïðèñâîåíèåì PIN_.... íîìåðîâ íîã - ðàçíûå. À ãäå ó ìåíÿ ëèøíèå áóêâû? Âðîäå âñ¸ ïî ìèíèìóìó...
|
|
|
|
Ñîîáùåíèé â ýòîé òåìå
Atlantis- Íàó÷èòå êðàñèâî äåðãàòü íîæêàìè STM32 Jul 6 2016, 15:40 HardEgor Îïðåäåëèòå ïîíÿòíûå íàçâàíèÿ è èñïîëüçóéòå òîò æå ... Jul 6 2016, 15:57 Ñåðãåé Áîðù Ñèëüíî äîðàáîòàííûå íàïèëüíèêîì ìàêðîñû èìåíè Àñêî... Jul 6 2016, 16:01 ViKo Þçàþ ðåãèñòðû ñáðîñà è óñòàíîâêè, ìîæíî äàæå îäíîâ... Jul 6 2016, 16:49 x893 Öèòàòà(ViKo @ Jul 6 2016, 19:49) Þçàþ ðåã... Jul 6 2016, 18:12 РўРёРјСѓСЂ Ð ÑžÐ Â°Ð Ñ Îïðåäåëÿþ íîæêè è ïîðòû äåôàéíàìè:
Êîä#define IPNU... Jul 6 2016, 18:44 Dog Pawlowa Öèòàòà(Atlantis- @ Jul 6 2016, 18:40... Jul 6 2016, 19:12 turnon Âñÿ ïëàòà îïèñàíà â pinout.h è íàïðèìåð, ñâåòîäèîä... Jul 6 2016, 19:33 Atlantis- Öèòàòà(turnon @ Jul 6 2016, 22:33) Âñÿ ïë... Jul 7 2016, 07:35  turnon Öèòàòà(Atlantis- @ Jul 7 2016, 10:35... Jul 8 2016, 06:16 AlexandrY Öèòàòà(Atlantis- @ Jul 6 2016, 18:40... Jul 6 2016, 19:40 jcxz Öèòàòà(AlexandrY @ Jul 7 2016, 01:40) Íå ... Jul 7 2016, 08:27  demiurg_spb Âñåãäà è íà âñåõ àðõèòåêòóðàõ èñïîëüçóþ ðåøåíèå íà... Jul 7 2016, 10:30 x893 Íà ñõåìå èñïîëüçóþ íàçâàíèÿ âèäà SIGNAL_PIN - íàïð... Jul 6 2016, 20:37 ar__systems Öèòàòà(x893 @ Jul 6 2016, 16:37) Íà ñõåìå... Jul 7 2016, 02:12 esaulenka https://github.com/antongus/stm32tpl - ìàêðîñû Àñê... Jul 7 2016, 06:34 Atlantis- Ïî÷åìó òî íå ïîëó÷àåòñÿ ñäåëàòü ìàêðîñ
Êîä#define ... Jul 7 2016, 14:29 demiurg_spb Öèòàòà(Atlantis- @ Jul 7 2016, 17:29... Jul 7 2016, 15:11         jcxz Öèòàòà(demiurg_spb @ Jul 9 2016, 04:00) È... Jul 10 2016, 07:01       AlexandrY Öèòàòà(demiurg_spb @ Jul 8 2016, 23:00) Í... Jul 10 2016, 08:31        jcxz Öèòàòà(AlexandrY @ Jul 10 2016, 14:31) È ... Jul 10 2016, 09:05         AlexandrY Öèòàòà(jcxz @ Jul 10 2016, 12:05) Ñëèøêîì... Jul 10 2016, 09:50        demiurg_spb Öèòàòà(AlexandrY @ Jul 10 2016, 11:31) È ... Jul 10 2016, 12:23 arhiv6 Âîò ãîòîâàÿ ðåàëèçàöèÿ íà ìàêðîñàõ. Òàì îïèñàíèå +... Jul 8 2016, 16:54
1 ÷åë. ÷èòàþò ýòó òåìó (ãîñòåé: 1, ñêðûòûõ ïîëüçîâàòåëåé: 0)
Ïîëüçîâàòåëåé: 0
|
|
|