stm32l152 Basic Programs
stm32l152 Basic Programs
LED TOGGLE-BOTH-LIBRARY-ODR
{ GPIOB->MODER |=GPIO_MODER_MODER6_0;
*GPIOB_BSRRL = 1ul<<6; {
} 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 i; {
{ USART1->DR=in;
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; }
RCC->APB2ENR |= RCC_APB2ENR_USART1EN; {
USART1->CR1 |=USART_CR1_RE; }
USART1->CR1 |=USART_CR1_UE; {
GPIOB->MODER |= GPIO_MODER_MODER6_0; }
}
8 TO PRINT TILL 65 9. LED CONTROL USING USER SWITCH
USART2->BRR =0xD0; {
USART2->CR1 |= USART_CR1_RE; {
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;
}
}