Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- NOR_HandleTypeDef hnor;
- FMC_NORSRAM_TimingTypeDef NOR_Timing;
- void NOR_Init(void)
- {
- GPIO_InitTypeDef GPIO_Init_Structure;
- __HAL_RCC_FMC_CLK_ENABLE();
- __HAL_RCC_FMC_FORCE_RESET();
- __HAL_RCC_FMC_RELEASE_RESET();
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_FMC;
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |
- GPIO_PIN_7 |
- GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |
- GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |
- GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |
- GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOE, &GPIO_Init_Structure);
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 |
- GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOF, &GPIO_Init_Structure);
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |
- GPIO_PIN_5 | GPIO_PIN_9 | GPIO_PIN_10;
- HAL_GPIO_Init(GPIOG, &GPIO_Init_Structure);
- hnor.Instance = FMC_NORSRAM_DEVICE;
- hnor.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
- NOR_Timing.AddressSetupTime = 15;
- NOR_Timing.AddressHoldTime = 0;
- NOR_Timing.DataSetupTime = 15;
- NOR_Timing.BusTurnAroundDuration = 3;
- NOR_Timing.CLKDivision = 0;
- NOR_Timing.DataLatency = 0;
- NOR_Timing.AccessMode = FMC_ACCESS_MODE_A;
- hnor.Init.NSBank = FMC_NORSRAM_BANK3;
- hnor.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
- hnor.Init.MemoryType = FMC_MEMORY_TYPE_NOR;
- hnor.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
- hnor.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
- hnor.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
- hnor.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
- hnor.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
- hnor.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
- hnor.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
- hnor.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
- hnor.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
- hnor.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
- hnor.Init.WriteFifo = FMC_WRITE_FIFO_DISABLE;
- /* Initialize the NOR controller */
- if (HAL_NOR_Init(&hnor, &NOR_Timing, &NOR_Timing) != HAL_OK)
- {
- /* Initialization Error */
- while(1);
- }
- HAL_Delay(1000);
- }
- int main(void)
- {
- MPU_Config();
- CPU_CACHE_Enable();
- NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
- SystemClock_Config();
- HAL_Init();
- CLI_Init();
- LED_Init();
- NOR_Init();
- NOR_IDTypeDef norID;
- HAL_NOR_Read_ID(&hnor, &norID);
- UartPort_Printf("ID: %u | %u\n", norID.Manufacturer_Code, norID.Device_Code1);
- while(1)
- {
- LED_Task();
- CLI_Task();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement