In previous guide(part 1), we looked for how to send a single character. Now we will extend the usage of uart module to send a string contains “Hello from stm32f4” and a variable as “my variable is variable”
In this guide we will cover the following:
- Extra steps needed to send a string
- Code
- Results
1. Extra steps needed to send a string
Starting from part 1, we need to add the following two header file
#include "stdio.h" //stdio which allows us to use sprinttf #include "stdint.h" //standardd int defention
then the prototype of the function to send a string
void UART_Write_String(char *p);
then the buffer to hold the data and variable
char buffer[40]={'0'}; unsigned int variable;
Now for the function that allows us to print the string
void UART_Write_String(char *p) { while(*p!='\0') { USART_write(*p); p++; } }
The function works as following
First, we pass the string as argument, then it sends the string character by character until reaches NULL (‘\0’) then it stops
2. Code
#include "stm32f4xx.h" // Device header #include "stdio.h" #include "stdint.h" void USART_write(int ch); void USART2_Init(void); void delay(int delayms); void UART_Write_String(char *p); char buffer[40]={'0'}; unsigned int variable; int main(){ USART2_Init(); while(1){ UART_Write_String("---------------------------\r\n"); UART_Write_String("hello from stm32f411RE\r\n"); sprintf(buffer,"my variable is %u \r\n",++variable); UART_Write_String(buffer); UART_Write_String("---------------------------\r\n"); //variable=variable+1; delay(1000); } } void USART2_Init(void){ RCC->APB1ENR|=RCC_APB1ENR_USART2EN; RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN; GPIOA->AFR[0]=0x0700; GPIOA->MODER|=(1<<5);//set bit5 GPIOA->MODER&=~(1<<4);//reset bit4 USART2->BRR = 0x0681; //9600 @16MHz USART2->CR1 |=0x2008; // enable tx } void USART_write(int ch){ while(!(USART2->SR&0x0080)){ } USART2->DR=(ch); } void UART_Write_String(char *p) { while(*p!='\0') { USART_write(*p); p++; } } void delay(int delayms){ volatile int i; for(; delayms>0;delayms--){ for(i=0;i<3192;i++); } }
3. Results
After compiling and uploading the code, open your serial terminal and set the baud to 9600 and you will get this
3 Comments
Your website would be much imporved if it had a basic search bar
Hi,
there is a search bar above
Add Comment