STM32F4DISCOVERY Register Level Programming
Hi Everyone,
I am new to stm32f4 series. I have done GPIO example using libraries. But i wanted to do register level programming. I have tried it but i could not get output for this. Can anyone help me out?
&sharpinclude 'main.h'
&sharpinclude 'stm32f4xx.h'&sharpinclude 'stm32f4xx_hal.h' // Device header
void SystemClock_Config(void);
void GPIO_Init(void);int main(void)
{// HAL_Init();
//unsigned int delay=0;SystemClock_Config();
GPIO_Init();while (1)
{ GPIOD->ODR|=0X00004000; //for(delay=0;delay<=16666667;delay++); HAL_Delay(500); //HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_15); GPIOD->ODR&=~0X00004000; // for(delay=0;delay<=16666667;delay++);HAL_Delay(500);}
/* USER CODE END 3 */}
/**
* @brief System Clock Configuration * @retval None */void SystemClock_Config(void){RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;/**Configure the main internal regulator output voltage
*/ __HAL_RCC_PWR_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/**Initializes the CPU, AHB and APB busses clocks
*/ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 8; RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 7; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); }/**Initializes the CPU, AHB and APB busses clocks
*/ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{ _Error_Handler(__FILE__, __LINE__); }/**Configure the Systick interrupt time
*/ HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);/**Configure the Systick
*/ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);}/** Configure pins as
* Analog * Input * Output * EVENT_OUT * EXTI*/void GPIO_Init(void){ RCC->AHB1ENR|=RCC_AHB1ENR_GPIODEN; GPIOD->MODER|=0X1000000;// PIN 14 as output GPIOD->OTYPER|=0X00004000;//Output push pull GPIOD->OSPEEDR|=0X00000000;/ low speed GPIOD->PUPDR&=0X00000000;//no pull up and pull down}
void _Error_Handler(char *file, int line){ /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ while(1) { } /* USER CODE END Error_Handler_Debug */}&sharpifdef USE_FULL_ASSERT
/** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */void assert_failed(uint8_t* file, uint32_t line){ /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, tex: printf('Wrong parameters value: file %s on line %d\r\n', file, line) */ /* USER CODE END 6 */}&sharpendif /* USE_FULL_ASSERT *//**
* @} *//**
* @} *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
#stm32f4discovery #stm32f4 #stm32