[php]
#include <stm32l1xx.h>
#include "LED.h"
const unsigned long led1=6UL;
const unsigned long led2=7UL;
const unsigned long led_mask[] = {1UL << led1, 1UL << led2};
/*—————————————————————————–
* LED_Init: Initialize LED Pins
*
* Parameters: (none)
* Return: (none)
*—————————————————————————-*/
void LED_Init (void) {
RCC->AHBENR |= (1UL << 2); /* Enable GPIOC clock */
RCC->AHBENR |= RCC_AHBENR_GPIOBEN; //enable clock for LEDs /* Enable GPIOC clock */
/* Configure LED (PC.8..9) pins as push-pull outputs, No pull-up, pull-down */
GPIOB->MODER &= ~((3UL << 2*led1) | (3UL << 2*led2));
GPIOB->MODER |= ((1UL << 2*led1) | (1UL << 2*led2));
GPIOB->OTYPER &= ~((1UL << led1) | (1UL << led2));
GPIOB->OSPEEDR &= ~((3UL << 2*led1) | (3UL << 2*led2));
GPIOB->OSPEEDR |= ((1UL << 2*led1) | (1UL << 2*led2));
GPIOB->PUPDR &= ~((3UL << 2*led1) | (3UL << 2*led2));
}
/*—————————————————————————–
* LED_On: Turns on requested LED
*
* Parameters: num – LED number
* Return: (none)
*—————————————————————————-*/
void LED_On (uint32_t num) {
if (num < LED_NUM) {
GPIOB->BSRRL = led_mask[num];
}
}
/*—————————————————————————–
* LED_Off: Turns off requested LED
*
* Parameters: num – LED number
* Return: (none)
*—————————————————————————-*/
void LED_Off (uint32_t num) {
if (num < LED_NUM) {
GPIOB->BSRRH = led_mask[num];
}
}
/*—————————————————————————–
* LED_Val: Write value to LEDs
*
* Parameters: val – value to be displayed on LEDs
* Return: (none)
*—————————————————————————-*/
void LED_Out (uint32_t value) {
int i;
for (i = 0; i < LED_NUM; i++) {
if (value & (1<<i)) {
LED_On (i);
} else {
LED_Off(i);
}
}
}
[/php]