0% found this document useful (0 votes)
177 views

stm32l152 Basic Programs

The document contains code snippets for controlling LEDs and transmitting data using USART on a STM32 microcontroller. Snippet 1 blinks an LED using direct register access. Snippet 2 toggles two LEDs in a loop. The other snippets transmit strings using USART, control LEDs based on timer delays and USART data, and implement transmission when a switch is pressed.

Uploaded by

christy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
177 views

stm32l152 Basic Programs

The document contains code snippets for controlling LEDs and transmitting data using USART on a STM32 microcontroller. Snippet 1 blinks an LED using direct register access. Snippet 2 toggles two LEDs in a loop. The other snippets transmit strings using USART, control LEDs based on timer delays and USART data, and implement transmission when a switch is pressed.

Uploaded by

christy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

1.LED BLINK-BSRRL 2.

LED TOGGLE-BOTH-LIBRARY-ODR

typedef unsigned int uint32_t; #include <stm32l1xx.h>

#define RCC_AHBENR (uint32_t*) (0x40023800+ 0x1C) int i;

#define GPIOB_MODER (uint32_t*) (0x40020400+ 0x00) int main(void)

#define GPIOB_BSRRL (uint32_t*)(0x40020400+ 0x18) {

int main(void) RCC->AHBENR |= RCC_AHBENR_GPIOBEN;

{ GPIOB->MODER |=GPIO_MODER_MODER6_0;

*RCC_AHBENR |= 0x02; GPIOB->MODER |=GPIO_MODER_MODER7_0;

*GPIOB_MODER |= 0x5000; while(1)

*GPIOB_BSRRL = 1ul<<6; {

*GPIOB_BSRRL = 1ul<<7; GPIOB->ODR = 0x80;

} for (i=0;i<50000;i++);

GPIOB->ODR ^= 0xC0;

for(i=0;i<50000;i++);

}
3.LED TOGGLE-TIMER DELAY 4. USART transmission : WRITTEN BY US(WORKING CODE)
#include <stm32l1xx.h> #include<stm32l1xx.h>
int i; int i;
char ch[25]= "HAIHELLO\r";
int main(void)
int main(void)
{
{
RCC->AHBENR |= RCC_AHBENR_GPIOBEN; RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOB->MODER |=GPIO_MODER_MODER6_0; GPIOA->MODER |=
GPIOB->MODER |=GPIO_MODER_MODER7_0; GPIO_MODER_MODER10_1;
GPIOA->MODER |=
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
GPIO_MODER_MODER9_1;
RCC->CR |= RCC_CR_MSION;
GPIOA->AFR[1] |= 0X770;
TIM2->ARR =10000; RCC->APB2ENR |=RCC_APB2ENR_USART1EN;
TIM2->PSC =50; USART1->CR1 |= USART_CR1_TE;
// TIM2->CR1 |= TIM_CR1_CEN;
USART1->CR1 |= USART_CR1_UE;
//USART1->DR;
// TIM2->CR1 |= TIM_CR1_ARPE;
//USART1->SR;
TIM2->CR1 |= 0X81;
USART1->BRR = 0XD0;
while(1) //while(1)
{ { for(i=0;i<11;i++)
while(TIM2->CNT==TIM2->ARR) {
USART1->DR =ch[i];
{
while((USART1->SR & 0X80)==0);
GPIOB->ODR ^= 0xC0;
//for(i=0;i<500;i++);
TIM2->CNT =0X00;
}
}
}
} } }
5. USART2 TRANSMIT 6. rx and tx

#include "stm32l1xx.h"
#include "stm32l1xx.h"
int i; char in;
int i=0;
char ch[]= "value"; char a[25];
int main(void)
int main(void)
{
{ RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; GPIOA->MODER |= GPIO_MODER_MODER10_1;
RCC->APB1ENR |= RCC_APB1ENR_USART2EN; GPIOA->MODER |= GPIO_MODER_MODER9_1;
GPIOA->AFR[1] |= 0x770;
GPIOA->MODER |=GPIO_MODER_MODER2_1; USART1->CR1 |=USART_CR1_RE;
USART1->CR1 |=USART_CR1_TE;
GPIOA->MODER |=GPIO_MODER_MODER3_1;
USART1->CR1 |=USART_CR1_UE;
GPIOA->AFR[0] |= 0x7700; USART1->BRR = 0xD0;
USART1->DR |=0X00;
USART2->CR1 |= USART_CR1_TE; while(1)
USART2->CR1 |= USART_CR1_RE; {
if(USART1->SR & 0X20)
USART2->CR1 |= USART_CR1_UE; {
in=USART1->DR;
USART2->BRR = 0xD0;

for(i=0;i<5;i++) a[i]=in;

{ USART1->DR=a[i];

USART2->DR=ch[i]; i++;
while((USART2->SR & 0X80)==0x00); }
}
}
}
}
7. threshold – 5 above green -5 below blue while(1)

#include "stm32l1xx.h" {

int in; if(USART1->SR & 0X20)

int i; {

int main(void) in=USART1->DR;

{ USART1->DR=in;

RCC->AHBENR |= RCC_AHBENR_GPIOAEN; }

RCC->AHBENR |= RCC_AHBENR_GPIOBEN; if(USART1->DR >= '5')

RCC->APB2ENR |= RCC_APB2ENR_USART1EN; {

GPIOA->MODER |= GPIO_MODER_MODER10_1; GPIOB->ODR =0x80;

GPIOA->MODER |= GPIO_MODER_MODER9_1; for(i=0;i<50;i++);

GPIOA->AFR[1] |= 0x770; GPIOB->ODR = 0x00;

USART1->CR1 |=USART_CR1_RE; }

USART1->CR1 |=USART_CR1_TE; else

USART1->CR1 |=USART_CR1_UE; {

USART1->BRR = 0xD0; GPIOB->ODR =0x40;

USART1->DR |=0X00; for(i=0;i<50;i++);

GPIOB->MODER |= GPIO_MODER_MODER7_0; GPIOB->ODR = 0x00;

GPIOB->MODER |= GPIO_MODER_MODER6_0; }

}
8 TO PRINT TILL 65 9. LED CONTROL USING USER SWITCH

#include "stm32l1xx.h" #include "stm32l1xx.h"


int i=0,j; int main (void)
int main(void)
{
{
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOB->MODER |= GPIO_MODER_MODER7_0;
RCC->APB1ENR |= RCC_APB1ENR_USART2EN;
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA->MODER |= GPIO_MODER_MODER3_1;
GPIOA->MODER |= 0x00;
GPIOA->MODER |= GPIO_MODER_MODER2_1;
while(1)
GPIOA->AFR[0] |= 0x770;

USART2->BRR =0xD0; {

USART2->CR1 |= USART_CR1_UE; if(GPIOA->IDR & 0x01)

USART2->CR1 |= USART_CR1_RE; {

USART2->CR1 |= USART_CR1_TE; GPIOB->ODR = 0x80;

USART2->DR = 0x00; }
while(i<='A') else
{
{
USART2->DR = i;
GPIOB->ODR = 0x00;
for(j=0;j<50000;j++);
}
i++;
}
while((USART2->SR & 0X80)==0x00);
}
}

}
10. TRANSMIT A DATA WHEN SWITCH IS PRESSED
BAUD RATE : 600
WHEN TRANSMITTING GLOW GREEN LED ELSE BLUE

#include "stm32l1xx.h"
int k;
char ch[] = "LAKSHMICHRIS";
int main (void)
{
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
GPIOB->MODER |= GPIO_MODER_MODER7_0;
GPIOB->MODER |= GPIO_MODER_MODER6_0;
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA->MODER |= 0x00;
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
USART1->BRR =0XD00;
USART1->CR1 |= USART_CR1_TE;
USART1->CR1 |= USART_CR1_UE;
GPIOA->AFR[1] |= 0X70;
GPIOA->MODER |= GPIO_MODER_MODER9_1;
while(1)
{
if(GPIOA->IDR & 0x01)
{
for(k=0;k<12;k++)
{
USART1->DR=ch[k];
while((USART1->SR & 0X80)==0);
GPIOB->ODR = 0X80;
}
}
else
GPIOB->ODR = 0X40;
}
}

You might also like