STM 32 의 usart 2 직렬 디 버 깅
usart1
그리고 프로그램 을 수정 하고 Usart 2 를 설정 합 니 다. 설정 이 끝 난 후에 도 프로그램 이 정확 하지 않 습 니 다. 그리고 void 에 있 습 니 다. GPIO_cfg();함수 에 한 문장 추가
GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
마지막 절 차 는 다음 과 같다.
#include "stm32f10x_lib.h"
FlagStatus RX_status;
FlagStatus Tx_status;
void RCC_cfg(void);
void GPIO_cfg(void);
void USART_cfg(void);
void NVIC_cfg(void);
unsigned char Rxbuf[20];
int index_send,index_rev;
u8 flag;
int main()
{
int i;
unsigned char TxBuf1[] = "Welcome to my STM32!I'm idiot!";
index_send = 0;
index_rev = 0;
flag = 0;
RCC_cfg();
GPIO_cfg();
NVIC_cfg();
USART_cfg();
// , 1
USART_ClearFlag(USART2,USART_FLAG_TC);
//
//PB5
// ,PB5
for( i=0;TxBuf1[i]!='\0';i++)
{
USART_SendData(USART2,TxBuf1[i]);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
//
while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
while(1)
{
}
}
//RCC
void RCC_cfg()
{
// RCC
RCC_DeInit();
// GPIO , , 1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
}
//IO
void GPIO_cfg()
{
GPIO_InitTypeDef GPIO_InitStructure;
//PAD5 US2 TX , ,
GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD , &GPIO_InitStructure);
//PD6 US2 RX ,
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &GPIO_InitStructure);
//LED /
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
//
void USART_cfg()
{
USART_InitTypeDef USART_InitStructure;
//
USART_StructInit(&USART_InitStructure);
// 115200
USART_InitStructure.USART_BaudRate = 115200;
// 8bits
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
// 1
USART_InitStructure.USART_StopBits = USART_StopBits_1;
// ,
USART_InitStructure.USART_Parity = USART_Parity_No;
// /
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
//
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
// 2
USART_Init(USART2, &USART_InitStructure);
// 2 ,
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
// 2
USART_Cmd(USART2, ENABLE);
}
//
void NVIC_cfg()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 2
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQChannel; // 2
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //
NVIC_Init(&NVIC_InitStructure);
}
void USART2_IRQHandler(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
//
RX_status = USART_GetFlagStatus(USART2, USART_FLAG_RXNE);
Tx_status = USART_GetFlagStatus(USART2, USART_FLAG_TC);
//
if(RX_status == SET)
{
flag = 1;
//
Rxbuf[index_rev] = USART_ReceiveData(USART2);
index_rev = index_rev + 1;
if(index_rev == 20)
index_rev = 0;
}
}
이상 의 프로그램, 컴 파일, 칩 에 다운로드, 실행, 슈퍼 단말기 에 포트 율, 자릿수 등 을 설정 하면 Welcome to my STM 32 를 볼 수 있 습 니 다! I'm idiot!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.