ETC22 17.6.2024 Programy //STM32G30J6 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // zakladni jednoduchy program blikani na pinech c. 1 a c. 8 // zápis klasicky nástroji Wiring /* Program pro ETC22 17.6.2024 , blikani na pinu č. 8 port PB5 a pinu c. 1 PB7 na STM32G030J6M6 v poudre SO8 s 8 vyvody a vypis poctu pruchodu smycky */ #define LED1 PB5 // PB5 na pinu c. 8 pouzdro SO8 #define LED2 PB7 //PB7 na pinu c. 1 pouzdro SO8 uint32_t pocet= 0; HardwareSerial Serial1 (PA10_R, PA9_R);// UART na remap. pinech č. 5 a 6 na STM32G030J6 pouzdro SO8 // kanal UART1 je na branach PA10 a PA9, ale pro pouzdro SO8 musime oznacit, ze se ma pouzit remapovani pinu void setup() { Serial1.begin(9600); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pocet = 0 ; } void loop() { digitalWrite(LED1, HIGH); digitalWrite(LED2,LOW); delay(1000); digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); delay(1000); pocet ++ ; Serial1.println(pocet); } // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Program pro ETC22 17.6.2024 , blikani na pinu č. 8 port PB5 a c. 1 PB7 STM32G030J6M6 v pouzdre SO8 s 8 vyvody vyuziti cteni , modifikace a zapisu primo do registru vystupni brany GPIOB->ODR*/ #define LED1 PB5 // PB5 na pinu c. 8 pouzdro SO8 #define LED2 PB7 //PB7 na pinu c. 1 pouzdro SO8 #define SVIT_PB5 0x20U // svit na PB5 0b0010000 #define TMA_PB5 ( ~0x20U) // tma na PB5 #define SVIT_PB7 0x80U // svit PB5 0b1000000 #define TMA_PB7 ( ~ 0x80U) // tma na PB7 0xFFFFF7F ,0b1111 1111 1111 1111 1111 1111 0111 1111 #define SVIT_PB5_PB7 0xA0U // svit na PB5 i PB7 #define TMA_PB5_PB7 ( ~ 0xA0U) // tma na PB5 i PB7 uint32_t pocet = 0 ; HardwareSerial Serial1 (PA10_R, PA9_R);// UART na remap. pinech č. 5 a 6 na STM32G030J6 pouzdro SO8 // kanal UART1 je na branach PA10 a PA9, ale pro pouzdro SO8 musime oznacit, ze se ma pouzit remapovani pinu void setup() { Serial1.begin(9600); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pocet = 0 ; } void loop() { //digitalWrite(LED1, HIGH); to by bylo klasicke ovladani brany ve Wiring //digitalWrite(LED2,LOW); GPIOB->ODR = GPIOB->ODR | SVIT_PB5; // LED PB5 ON // nastavení urovně H na PB5 primo pres registr // rozsviceni- logicky soucet danehobitu s 1, k ostanim se pricita 0 GPIOB->ODR = GPIOB->ODR & TMA_PB7; // LED PB5 ON // nastavení urovně H na PB5 primo pres registr delay(500); //zhasnuti bitove nasobeni, bit 7 hodnotou 0, ostanín asobeni x1 // alterantivní zpusob ovladani pinu PB5 // precist obsah GPIOB->ODR a modifikovat do "0" delay(300); //digitalWrite(LED1, LOW); to by bylo klasicke ovladani brany ve Wiring //digitalWrite(LED2, HIGH); GPIOB->ODR = GPIOB->ODR & TMA_PB5 ; // precist obsah GPIOB->ODR a modifikovat do "0" GPIOB->ODR = GPIOB->ODR | SVIT_PB7 ; // precist obsah GPIOB->ODR a modifikovat do "0" delay(300); GPIOB->ODR = GPIOB->ODR & TMA_PB5_PB7 ; // delay(300); GPIOB->ODR = GPIOB->ODR | SVIT_PB5_PB7 ; // delay(500); GPIOB->ODR = GPIOB->ODR & TMA_PB5_PB7 ; // delay(500); pocet ++ ; Serial1.println(pocet); }