Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
[Embedded] Cum fac ca userul sa defineasca pinii
Last Updated: Feb 06 2023 14:27, Started by
bogdan2011
, Dec 01 2022 14:27
·
0
#1
Posted 01 December 2022 - 14:27
Am scris o biblioteca pentru un ecran LCD in SDK-ul de la raspberry pi pico. In lcd.c am functiile care controleaza LCD-ul si care lucreaza cu GPIO (gpio_init, gpio_put etc). Tot acolo am definit si pinii folositi de aceste functii, dar as vrea ca userul sa poata defini proprii pini in main.c, fara sa editeze lcd.c.
Codul arata cam asa: uint RS = 16; uint EN = 17; uint D4 = 18; uint D5 = 19; uint D6 = 20; uint D7 = 21; void lcd_setup() { // initialize GPIO pins gpio_init(RS); gpio_init(EN); gpio_init(D4); gpio_init(D5); gpio_init(D6); gpio_init(D7); // set direction of GPIO pins gpio_set_dir(RS, GPIO_OUT); gpio_set_dir(EN, GPIO_OUT); gpio_set_dir(D4, GPIO_OUT); gpio_set_dir(D5, GPIO_OUT); gpio_set_dir(D6, GPIO_OUT); gpio_set_dir(D7, GPIO_OUT); //set all pins low gpio_put(RS, 0); gpio_put(EN, 0); gpio_put(D4, 0); gpio_put(D5, 0); gpio_put(D6, 0); gpio_put(D7, 0); } Ce am incercat pana acum: - am definit variabilele pinilor in lcd.c fara a le da o valoare, apoi le-am dat-o in main.c dar compiler-ul s-a plans ca sunt dublu declarate - am trecut pinii ca parametrii ai functiei, dar avand in vedere ca mai am si alte functii, devine prea complicat - am creat un struct, dar dupa ce userul creaza propriul "obiect", nu stiu cum sa pasez pinii catre functii. Ceva de genul: typedef struct LCD { uint RS_Pin; uint EN_Pin; uint D4_Pin; uint D5_Pin; uint D6_Pin; uint D7_Pin; } LCD; LCD lcd1; lcd1.RS_Pin = 16; lcd1.EN_Pin = 17; etc... |
#2
Posted 01 December 2022 - 16:02
Pasezi pinii ca parametri functiei lcd_setup() si ii stochezi in structura definita global.
Sau dai #define in lcd.h la fiecare pin o valoare implicita, apoi ii redefinesti in main.c, dupa caz. Header-ul bineinteles trebuie sa contina si prototipul functiilor. Edited by red46, 01 December 2022 - 16:04. |
#3
Posted 06 February 2023 - 14:27
Puteți trece numerele PIN ca argumente de funcție în lcd.c și permiteți utilizatorului să le specifice în main.c atunci când apelează funcțiile. De exemplu, puteți modifica semnătura funcției gpio_init din lcd.c la:
void gpio_init(int pin)Apoi, în main.c, utilizatorul poate specifica numărul PIN dorit atunci când apelează funcția gpio_init: gpio_init(17);În acest fel, utilizatorul poate alege ce pin să folosească fără a fi nevoie să modifice codul din lcd.c. Puteți aplica aceeași abordare și altor funcții care folosesc GPIO. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users