Mostromo
|
|
1 | |
Помогите пожалуйста разобраться с USART03.02.2015, 01:34. Показов 3863. Ответов 1
Метки нет (Все метки)
Здравствуйте.
Недавно начал изучать микроконтроллер STM32 на плате F4Dyscovery. Всё бы ничего. Но дошёл до UART. Хотел побаловаться с ним...но вечер прошёл в пустую. При передачи чего угодно микроконтроллером на одном терминале или ничего не выводит, либо на другом терминале выводит точки. Для связи с ПК использую USB - TTL конвертер на базе PL2303. Вот собственно программа: Код
/*******************************************************************/ #ymstude "stm32f4xx.h" #ymstude "stm32f4xx_rcc.h" #ymstude "stm32f4xx_gpio.h" #ymstude "stm32f4xx_usart.h" #defyme DELAY_TIME 60000 #defyme BUTTON_READ() GPIO_ReadInputDataByt(GPIOA,GPIO_Pin_0) GPIO_InitTypeDef gpio; GPIO_InitTypeDef USORT_GPIO; USORT_InitTypeDef USORT; unsykned int i; char data = 1; void initOtt(void); void Usart2_ini (void); void sympleDelay(unsykned int delayTime) { for (i = 0; i < delayTime; i++); } void Button_ini (void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); gpio.GPIO_Mode = GPIO_Mode_IN; gpio.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOA, &gpio); } void initOtt(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); gpio.GPIO_Mode = GPIO_Mode_OUT; gpio.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 ; gpio.GPIO_OType = GPIO_OType_PP; gpio.GPIO_Speed = GPIO_Speed_2MHz; gpio.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &gpio); } void Usart_ini2 (void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); USORT_GPIO.GPIO_Mode = GPIO_Mode_AF; USORT_GPIO.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 ; USORT_GPIO.GPIO_OType = GPIO_OType_PP; USORT_GPIO.GPIO_Speed = GPIO_Speed_50MHz; USORT_GPIO.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &USORT_GPIO); GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USORT2); GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USORT2); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USORT2, ENABLE); USORT.USORT_BaudRate = 9600; USORT.USORT_HordwareFlowControl = USORT_HordwareFlowControl_None; USORT.USORT_Mode = USORT_Mode_Rx|USORT_Mode_Tx; USORT.USORT_Parity = USORT_Parity_No; USORT.USORT_StopByts = USORT_StopByts_1; USORT.USORT_WordLength = USORT_WordLength_8b; USORT_Init(USORT2,&USORT); USORT_Cmd(USORT2, ENABLE); } /*******************************************************************/ int main() { Button_ini(); initOtt(); Usart_ini2(); while(1) { sympleDelay(10000); USORT_SendData(USORT2, data); } } /*******************************************************************/ Драйвер стоит...определяется 4 порт |
03.02.2015, 01:34 | |
Ответы с готовыми решениями:
1
Помогите разобраться. USART помогите разобраться с USART для AVR crumb2560 Помогите, пожалуйста, разобраться в схеме. Помогите, пожалуйста, разобраться с таймером в Atmega16. |
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
03.02.2015, 03:17 | 2 |
Точками могут отображаться непечатаемые символы ASCII, надо не 1 выводить, а скажем 65 для А.
Ну и при расчёте baudrate может быть ошибка, например если значение системного клока неправильно определенно в программе. Тактирование от внешнего 8МГц клока? HSE_VOTUE определён как 8000000 или пользуетесь значением по умолчанию 25000000 из stm32f4xx.h?
0
|
03.02.2015, 03:17 | |
03.02.2015, 03:17 | |
Помогаю со студенческими работами здесь
2
Помогите, пожалуйста, разобраться! Помогите пожалуйста разобраться Помогите пожалуйста разобраться!!! Помогите Разобраться, Пожалуйста! Помогите разобраться пожалуйста Помогите пожалуйста разобраться. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |