0

STM32F072RBT6 モジュールを PC に接続し、USART 経由でデータを送信しようとしています。私はこれにかなり慣れていないので、いくつかのことを理解していません。残念ながら、このモジュールで使用できる例はありません。私はUSBケーブルを使ってstmをPCに接続しています。これが私のコードです:

GPIO_InitTypeDef GPIO_InitStruct;
USART_InitTypeDef USART_InitStructure;

void send_char(char c)
{
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
USART_SendData(USART2, c);
}

void send_string(const char* s) 
{
while (*s)
    send_char(*s++);
}

GPIO_InitTypeDef GPIO_InitStruct;
USART_InitTypeDef USART_InitStructure;
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
//GPIO_PinAFConfig(GPIOA, GPIO_PinSource2,GPIO_AF_1);  //tried this too


GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
//GPIO_PinAFConfig(GPIOA, GPIO_PinSource3,GPIO_AF_1);

Rx ピンをフローティング入力として設定する必要があると読みましたが、このようなモードを設定する必要はありません。また、GPIO_Mode_AF を使用してみ、PinAFConfig をコメントしました。

GPIO_Init(GPIOA, &GPIO_InitStruct);
USART_StructInit(&USART_InitStructure);
USART_InitStructure.USART_BaudRate = 9600;              
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;   
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;     
USART_InitStructure.USART_Parity=USART_Parity_No;               
USART_InitStructure.USART_StopBits=USART_StopBits_1;            
USART_InitStructure.USART_WordLength=USART_WordLength_8b;       
USART_Init(USART2, &USART_InitStructure);

USART_Cmd(USART2, ENABLE);

while (1) {
    send_string("Hello world!\r\n");
}

}

teraterm で結果を確認しようとしています。ボードのピンにうっかり触れてしまったとき、端末に文字が表示されることに気付きました。それは接続が機能していることを示していますが、何か間違った設定をしていますか? 私もUSART1でこれをやろうとしましたが、それはピンですが、何も起こりませんでした。あなたはできる

4

1 に答える 1

0

例があります

たとえば、下のSTM32CubeF0でProjects/STM32F072RB-Nucleo/Examples/UART

USART1 を使用していますが、少し調整する必要があります。

もし例がなかったら

次に、 STM32CubeMXを使用して簡単に生成できます。MCU でプロジェクトを開始し、USART2 (左側) の横にある三角形をクリックし、Mode Asynchronous を選択し、Project / Generate Code を使用します。

于 2015-12-09T11:23:47.533 に答える