当前位置:网站首页>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 .
边栏推荐
- Gradle复合构建
- General makefile (I) single C language compilation template
- UEFI development learning 2 - running ovmf in QEMU
- Communication standard -- communication protocol
- C WinForm [exit application] - practice 3
- Talk about the function of magnetic beads in circuits
- Gradle composite construction
- [tutorial 15 of trio basic from introduction to proficiency] trio free serial communication
- Connection mode - bridge and net
- Drive LED -- GPIO control
猜你喜欢
![Measurement fitting based on Halcon learning [III] PM_ measure_ board. Hdev routine](/img/f9/fc4f0bbce36b3c1368d838d723b027.jpg)
Measurement fitting based on Halcon learning [III] PM_ measure_ board. Hdev routine

How to copy formatted notepad++ text?

Negative pressure generation of buck-boost circuit

C # joint configuration with Halcon

Interview catalogue

Communication standard -- communication protocol

Basic embedded concepts

Programming knowledge -- assembly knowledge

How to select conductive slip ring

Arduino uses nrf24l01+ communication
随机推荐
Vofa+ software usage record
Bluetooth hc-05 pairing process and precautions
Halcon's practice based on shape template matching [2]
STM32 --- NVIC interrupt
Live555 push RTSP audio and video stream summary (III) flower screen problem caused by pushing H264 real-time stream
NTC thermistor application - temperature measurement
MySQL MHA high availability cluster
How to define guid in AMI code
Arduino uses nrf24l01+ communication
Class of color image processing based on Halcon learning_ ndim_ norm. hdev
Google sitemap files for rails Projects - Google sitemap files for rails projects
Soem EtherCAT source code analysis I (data type definition)
C language enhancement -- pointer
How to select conductive slip ring
Design a clock frequency division circuit that can be switched arbitrarily
UEFI development learning series
The firmware of the connected j-link does not support the following memory access
Brief discussion on Buck buck circuit
STM32 single chip microcomputer -- volatile keyword
UEFI development learning 3 - create UEFI program