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....