当前位置:网站首页>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 .
边栏推荐
- Management and use of DokuWiki
- C # joint configuration with Halcon
- Development tools -- gcc compiler usage
- Brief discussion on Buck buck circuit
- Gradle composite construction
- List of linked lists
- Void* C is a carrier for realizing polymorphism
- Network communication model -- Network OSI tcp/ip layering
- 动力电池UL2580测试项目包括哪些
- Charge pump boost principle - this article will give you a simple understanding
猜你喜欢
Relationship between line voltage and phase voltage, line current and phase current
C WinForm [change the position of the form after running] - Practical Exercise 4
Shape template matching based on Halcon learning [VII] reuse_ model. Hdev routine
Basic embedded concepts
C, Numerical Recipes in C, solution of linear algebraic equations, LU decomposition source program
Measurement fitting based on Halcon learning [II] meaure_ pin. Hdev routine
STM32 single chip microcomputer -- volatile keyword
Connection mode - bridge and net
STM32 single chip microcomputer - bit band operation
Several implementation schemes of anti reverse connection protection of positive and negative poles of power supply!
随机推荐
Bootloader implementation of PIC MCU
Network communication process
Synchronization of QT multithreading
动力电池UL2580测试项目包括哪些
How to select conductive slip ring
Embedded composition and route
Talk about the circuit use of TVs tube
On boost circuit
STM32 outputs 1PPS with adjustable phase
Extern keyword function
Ble encryption details
Classic application of MOS transistor circuit design (2) - switch circuit design
Gradle composite construction
UEFI development learning 2 - running ovmf in QEMU
Reasons for rapid wear of conductive slip rings
Several implementation schemes of anti reverse connection protection of positive and negative poles of power supply!
Introduction of air gap, etc
Some thoughts on extracting perspectives from ealfa and Ebeta
UEFI development learning 3 - create UEFI program
UEFI development learning 4 - getting to know variable services