1、端口使能

STM32L0与STM32Fx系列不同的是,它的GPIO复位寄存器 不存放在APB1或者APB2上,而是单独有一个 RCC_IOPRSTR 寄存器存放。
我这里使用PA5端口
方法一:借用映射好的地址使能
RCC->IOPENR |= RCC_IOPENR_GPIOAEN; 
方法一:直接赋值使能
RCC->IOPENR |= 1<<0; 
 
2、PA5端口模式设置为输出模式(对应位设置为:01)

注意:在端口模式设置之前,必须先清除该位原先设置,以确保模式设置正常
	GPIOA->MODER&=0xFFFFF3FF; //清除原先设置
	GPIOA->MODER|=1<<(5*2);//设置5口为输出模式
	 
3、PA5端口输出类型设置为推挽输出PP

GPIOA->OTYPER=0x00000000;
GPIOA->OTYPER|=0<<5;
 
4、PA5端口输出速度设置
       
GPIOA->OSPEEDR|=0<<(5*2);
 
5、PA5端口上拉/下拉寄存器设置

设置之前一定要清除原先操作;
	GPIOA->PUPDR=0x24000000;
	GPIOA->PUPDR|=0<<(5*2); 
5、输出设置

 
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
		
		GPIOA->ODR |= 1<<5;
		HAL_Delay(500);
		GPIOA->BRR |= 1<<5;
		HAL_Delay(500);
  } 
现象:PA5端口连接的LED闪烁
完整代码
int main(void)
{
  /* USER CODE BEGIN 1 */
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  /* USER CODE BEGIN 2 */
	RCC->IOPENR |= 1<<0;
	GPIOA->MODER&=0xFFFFF3FF;
	GPIOA->MODER|=1<<(5*2);
	GPIOA->OTYPER=0x00000000;
	GPIOA->OTYPER|=0<<5;
	GPIOA->OSPEEDR|=0<<(5*2);
	GPIOA->PUPDR=0x24000000;
	GPIOA->PUPDR|=0<<(5*2);
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
		
		GPIOA->ODR |= 1<<5;
		HAL_Delay(500);
		//GPIOA->BRR |= 1<<5;
		GPIOA->BSRR|=	1<<21;
		HAL_Delay(500);
  }
  /* USER CODE END 3 */
}









