stm32f103 GPIOB port yazma sorunu

Başlatan Yuunus, 11 Mart 2025, 22:56:08

Yuunus

STMCubeide CMSIS library ile yeni proje olusturdum, ama bir turlu daha onceden yazmis oldugum lcd kodu calistiramadim, ve scope ile PORTB nin 5 pinini inceledim ve bu pinin surekli high konumda oldugunu gordum, PB5 den PB9'a kadar herhangi bir sorun yok ama PB4'e hicbir sekilde mudahale edemiyorum. lcd kodunu gectim neden bu pine erisemiyorum?

#include "stm32f1xx.h"
void init_clock(void)
{
    FLASH->ACR    |= FLASH_ACR_LATENCY_2;     // Two wait states, per datasheet
    RCC->CFGR    |= RCC_CFGR_PPRE1_2;        // prescale AHB1 = HCLK/2
    RCC->CFGR     |= RCC_CFGR_PLLXTPRE_HSE;    // PREDIV1 = 0
    RCC->CR     |= RCC_CR_HSEON;             // enable HSE clock
    while (!(RCC->CR & RCC_CR_HSERDY));// wait for the HSEREADY flag
    RCC->CFGR     |= RCC_CFGR_PLLSRC;            // set PLL source to HSE
    RCC->CFGR     |= RCC_CFGR_PLLMULL9;         // multiply by 9
    RCC->CR |= RCC_CR_PLLON;                // enable the PLL
    while (!(RCC->CR & RCC_CR_PLLRDY)); // wait for the PLLRDY flag
    RCC->CFGR     |= RCC_CFGR_SW_PLL;         // set clock source to pll
    while (!(RCC->CFGR & RCC_CFGR_SWS_PLL)); // wait for PLL to be CLK
    SystemCoreClockUpdate();                 // calculate the SYSCLOCK value
}
void GPIO_Conf_init(void)
{
   RCC->APB2ENR|=RCC_APB2ENR_IOPBEN;
    GPIOB->CRL &= ~(GPIO_CRL_CNF4 | GPIO_CRL_MODE4 | GPIO_CRL_CNF5 | GPIO_CRL_MODE5 | GPIO_CRL_CNF6 | GPIO_CRL_MODE6 | GPIO_CRL_CNF7 |
    GPIO_CRL_MODE7);
    GPIOB->CRL |= (GPIO_CRL_MODE4_1 | GPIO_CRL_MODE5_1 | PIO_CRL_MODE6_1 | GPIO_CRL_MODE7_1);
    GPIOB->CRH &= ~(GPIO_CRH_CNF8 | GPIO_CRH_MODE8 | GPIO_CRH_CNF9 | GPIO_CRH_MODE9);
    GPIOB->CRH |= (GPIO_CRH_MODE8_1 | GPIO_CRH_MODE9_1);
}
int main(void)
{
    init_clock();
    GPIO_Conf_init();
    while(1)
    {    
         GPIOB->ODR |= 0x50;
         __NOP();
         GPIOB->ODR &= ~0x50;
             __NOP();
    }
}

CLR

çünkü PB3-PB4 default jtag portları olarak çalışıyor, gpio kısmında alternate function registerlerinden düzelte bilirsin 
Knowledge and Experience are Power

Yuunus

tesekkurler @CLR, ihtiyaci olan olursa, kapatmak icin kod.

    DBGMCU->CR &= ~DBGMCU_CR_TRACE_IOEN;
    RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
    AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;