Hallo,
ich versuche jetzt schon seit einiger zeit "Hello World!!" über den
USART1 an den PC zu senden. Ich hab mir schon die st beispiele und
diverse diskusionen hier im Forum durchgelesen, konnte bis jetzt aber
noch nichts erreichen. Der PC empfängt nur 0. habs in mit nem anderen
quelltext schon geschafft, das er 255 und 0 empfängt, aber das war so
nicht gewollt ^_^'
Hier mal mein aktueller Quelltest:
1 | #include <stdio.h>
|
2 | #include "stm32f10x.h"
|
3 |
|
4 | #ifdef __GNUC__
|
5 | #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
|
6 | #else
|
7 | #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
|
8 | #endif
|
9 |
|
10 | int main(int argc, char* argv[])
|
11 | {
|
12 | SystemInit();
|
13 | USART_DeInit(USART1);
|
14 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
15 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
16 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
|
17 |
|
18 | GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
|
19 |
|
20 | GPIO_InitTypeDef GPIO_InitStruct;
|
21 | USART_InitTypeDef USART_InitStruct;
|
22 |
|
23 | GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
|
24 | GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
25 | GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
|
26 | GPIO_Init(GPIOA, &GPIO_InitStruct);
|
27 |
|
28 | GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
|
29 | GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
|
30 | GPIO_Init(GPIOA, &GPIO_InitStruct);
|
31 |
|
32 | USART_InitStruct.USART_BaudRate = 9600;
|
33 | USART_InitStruct.USART_WordLength = USART_WordLength_8b;
|
34 | USART_InitStruct.USART_StopBits = USART_StopBits_1;
|
35 | USART_InitStruct.USART_Parity = USART_Parity_No;
|
36 | USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
37 | USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
38 | USART_Init(USART1, &USART_InitStruct);
|
39 | USART_Cmd(USART1, ENABLE);
|
40 |
|
41 | printf("Hello World!!\n\r");
|
42 |
|
43 | while(1);
|
44 |
|
45 | return 0;
|
46 | }
|
47 |
|
48 | PUTCHAR_PROTOTYPE
|
49 | {
|
50 | USART_SendData(USART1, (uint8_t) ch);
|
51 | while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
|
52 | return ch;
|
53 | }
|
Falls es wichtig ist:
ich benutze HTerm und dieses board
http://cgi.ebay.de/STM32-Development-Board-STM32F103VET6-TFT-LCD-Module_W0QQitemZ190412961573QQcategoryZ26206QQcmdZViewItemQQ_trksidZp5197.m7QQ_trkparmsZalgo%3DLVI%26itu%3DUCI%26otn%3D5%26po%3DLVI%26ps%3D63%26clkid%3D7039328767038264550
Ich hoffe ihr könnt mir helfen