【发布时间】:2021-02-05 10:28:35
【问题描述】:
现在我正在使用 STM32F103C8 蓝色药丸板,我正在使用 UART 协议在这里我能够将数据发送到正在工作的腻子,但将数据从腻子发送到微控制器(无法从腻子接收数据)。什么问题我无法理解一切正常但我无法接收数据?
代码:
#include "stm32f10x.h" // Device header
volatile char data;
int main(void){
//configure HSI SYSTEM clock .
RCC->CR = RCC_CR_HSION;
RCC->CFGR = RCC_CFGR_SW_HSI;
//Enable Alternate function clock, PORTA and USART1.
RCC->APB2ENR = RCC_APB2ENR_AFIOEN|RCC_APB2ENR_USART1EN|RCC_APB2ENR_IOPAEN;
//Alternate function mode PA9
GPIOA->CRH = GPIO_CRH_MODE9_1|GPIO_CRH_CNF9_1;
//ALternate function mode PA10.
GPIOA->CRH |= GPIO_CRH_MODE10_1|GPIO_CRH_CNF10_1;
//USART1 Enable.
USART1->CR1 = USART_CR1_UE;
//8-bit word length.
USART1->CR1 |= ~(USART_CR1_M);
//baudrate 8MHz,9600 baudrate.
USART1->BRR = 0x341;
//Enable TE,RE bits
USART1->CR1 |= USART_CR1_RE|USART_CR1_TE;
while(1){
//wait for receive data
while((USART1->SR &USART_SR_RXNE )==0){}
data = USART1->DR;
while((USART1->SR & USART_SR_TXE)== 0){}
USART1->DR = data;
while((USART1->SR &USART_SR_TC) == 0){}
}
this code receives data from the PC and sends data to the PC.
【问题讨论】:
-
是什么让您认为问题与代码有关,而不是与硬件有关?您是否使用示波器验证了 Rx 信号?
-
代码一切都在keilMDK-5的模拟模式下工作,它正在接收字符并发送到Keil的uart终端。一切都很好,但在硬件上不工作我已经检查过 tx 和 Rx 线也没有问题。它被发送到 pc 但没有从 pc 接收。
-
模拟器没什么用,你得用示波器。
标签: c