Hallo, ich habe hier ein STM32 Discovery Board (CPU: STM32F103RB). Versuche den Uart1 zum Laufen zu bringen, doch leider kommt an dem angeschlossenen USB->Serial Konverter nichts an. PA9 -> RX und PA10-> TX Sourcecode:
1  | #include <stm32f10x_gpio.h>  | 
2  | #include <stm32f10x_tim.h>  | 
3  | #include <stm32f10x_rcc.h>  | 
4  | #include <stm32f10x_usart.h>  | 
5  | |
6  | void InitializeUart() {  | 
7  | RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);  | 
8  | USART_InitTypeDef init;  | 
9  | init.USART_BaudRate = 115200;  | 
10  | init.USART_WordLength = USART_WordLength_8b;  | 
11  | init.USART_StopBits = USART_StopBits_1;  | 
12  | init.USART_Parity = USART_Parity_No;  | 
13  | init.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  | 
14  | init.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  | 
15  | USART_Init(USART1, &init);  | 
16  | |
17  | GPIO_InitTypeDef rspin;  | 
18  | |
19  |   //TX
 | 
20  | rspin.GPIO_Mode = GPIO_Mode_AF_PP;  | 
21  | rspin.GPIO_Mode = GPIO_Pin_9;  | 
22  | rspin.GPIO_Speed = GPIO_Speed_2MHz;  | 
23  | GPIO_Init(GPIOA, &rspin);  | 
24  |   //RX
 | 
25  | rspin.GPIO_Mode = GPIO_Mode_IN_FLOATING;  | 
26  | rspin.GPIO_Pin = GPIO_Pin_10;  | 
27  | GPIO_Init(GPIOA, &rspin);  | 
28  | USART_Cmd(USART1, ENABLE);  | 
29  | }
 | 
30  | void putchar(char data) {  | 
31  | while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);  | 
32  | |
33  | USART_SendData(USART1, data);  | 
34  | }
 | 
35  | int main() {  | 
36  | uint32_t clock = SystemCoreClock;  | 
37  | char a = 0x00;  | 
38  | InitializeUart();  | 
39  | |
40  | for (;;) {  | 
41  | if (a > 250) {  | 
42  | a = 0x00;  | 
43  |     }
 | 
44  | |
45  | putchar(a);  | 
46  | a++;  | 
47  |   }
 | 
48  | |
49  | return 0;  | 
50  | }
 | 
Der STM läuft mit 24Mhz. Das komische ist es kommt überhaupt nichts an....