当前位置:网站首页>STM32 --- serial port communication
STM32 --- serial port communication
2022-07-05 08:16:00 【chen_ bx】
STM32--- Serial port communication
Light up through serial port communication LED The lamp
Realize sending through serial port ’1’ Light up the red light , send out ’2’ Turn on the yellow light , send out ‘3’ Turn on all lights , Send other data and turn off all lights .
Basic serial port configuration
No need to interrupt , So the interrupt code in the code is commented out .
usart.h The code is as follows :
#ifndef __USART_H
#define __USART_H
#include "stm32f10x.h"
void Usart_Init(void);
void Usart_SendByte(USART_TypeDef* pUSARTx,uint8_t data);
#endif /* USART_H */
usart.c The code is as follows :
#include "usart.h"
#include "stm32f10x.h"
#include "stdio.h"
//static void Nvic_Init(){
// NVIC_InitTypeDef NVIC_InitStructure;
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//
// NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
// NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
// NVIC_Init(&NVIC_InitStructure);
//}
void Usart_Init(){
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// open IO The clock
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
// send out
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
// Accept
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
// Interrupt priority configuration
// Nvic_Init();
// Serial port configuration
USART_InitStructure.USART_BaudRate=115200;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART_InitStructure);
// USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_Cmd(USART1,ENABLE);
}
// send data
//void Usart_SendByte(USART_TypeDef* pUSARTx,uint8_t data){
// USART_SendData(pUSARTx,data);
// while( USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE) == RESET);
//
//}
// Interrupt service function
//void USART1_IRQHandler(){
// uint8_t text;
// if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET ){
// text = USART_ReceiveData(USART1);
//
// USART_SendData(USART1,text);
// }
//}
// redefinition fputc function
// printf Function redirection
int fputc(int ch, FILE *f)
{
USART_SendData(USART1,(uint8_t) ch);
while( USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
return (ch);
}
//getchar Function redirection
int fgetc(FILE *f)
{
while( USART_GetFlagStatus(USART1,USART_FLAG_RXNE) == RESET);
return (int)USART_ReceiveData(USART1);
}
main function code
#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include <stdio.h>
int main(void)
{
uint8_t i;
Usart_Init();
LED_Init();
//Usart_SendByte(USART1,100);
//USART_SendData(USART1,100);
printf(" Program starts \n");
while(1){
i = getchar();
printf("i = %c\n",i);
switch(i){
case '1':
LED_RED_TOGGLE;
break;
case '2':
LED_YELLOW_TOGGLE;
break;
case '3':
LED_RED_ON;
LED_YELLOW_ON;
break;
default:
LED_RED_OFF;
LED_YELLOW_OFF;
break;
}
}
}
Serial debugging assistant
Be careful
1. You need to check Target => Use MicroLIB
2. If serial assistant is not checked 16 Base number All data sent and received are characters .
边栏推荐
- OLED 0.96 inch test
- Development tools -- gcc compiler usage
- OC and OD gate circuit
- Improve lighting C program
- Take you to understand the working principle of lithium battery protection board
- Management and use of DokuWiki
- C WinForm [help interface - send email] - practice five
- Buildroot system for making raspberry pie cm3
- On boost circuit
- Makefile application
猜你喜欢
Drive LED -- GPIO control
After installing the new version of keil5 or upgrading the JLINK firmware, you will always be prompted about the firmware update
MHA High available Cluster for MySQL
Let's briefly talk about the chips commonly used in mobile phones - OVP chips
UE像素流,来颗“减肥药”吧!
[paper reading] the latest transfer ability in deep learning: a survey in 2022
Keil use details -- magic wand
Management and use of DokuWiki (supplementary)
Compilation warning solution sorting in Quartus II
Detailed summary of FIO test hard disk performance parameters and examples (with source code)
随机推荐
Interview catalogue
C language enhancement -- pointer
Detailed summary of FIO test hard disk performance parameters and examples (with source code)
Halcon's practice based on shape template matching [2]
Consul installation
C WinForm [get file path -- traverse folder pictures] - practical exercise 6
List of linked lists
C # joint configuration with Halcon
My-basic application 2: my-basic installation and operation
How to define guid in AMI code
Gradle复合构建
Measurement fitting based on Halcon learning [III] PM_ measure_ board. Hdev routine
C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,LU分解(LU Decomposition)源程序
Bluetooth hc-05 pairing process and precautions
Working principle and type selection of common mode inductor
[tutorial 15 of trio basic from introduction to proficiency] trio free serial communication
Extern keyword function
Verilog -- state machine coding method
Programming knowledge -- assembly knowledge
Relationship between line voltage and phase voltage, line current and phase current