Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
hubbti
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 10
1

Вопросы по компилятору Keil

04.12.2013, 17:02. Просмотров 3301. Ответов 6
Метки нет (Все метки)

Вопрос по структуре.
В простом примере простая структура. Но тем не менее компилятор ругается (на 3 и 23 строки).
Вроде бы все правильно.
Функции Func1() передается адрес структуры pack. Аргумент в функции объявляется как указатель на тип packet.
Где я ошибаюсь?

Проект в пристежке.

[111.77 Кб]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 17:02
Ответы с готовыми решениями:

Вопросы по Keil.
Всем привет. Вопрос по Кейлу. Надо узнать скока использовано FLASH (тут наверно 8632), скока...

Мелкие вопросы по Keil
Как ни странно, не нашел подобной темы - неужели плохо искал ??? Тем не менее, рискну задать...

KEIL: вопросы по MDK5
Пользуюсь Кейлом некоторое время, вещь удобная, но не могу простить ему двух особенностей: 1) В...

Assembler Keil stm32f103 общие вопросы
Приветствую форумчане. Есть несколько вопросов по асму Сообщения-вопросы я предлагаю выделять...

Программирование STM32 на ассемблере в Keil: общие вопросы.
У меня есть уже некоторый опыт работы с 8-ми битными МК AVR на ассемблере, но поработав с ними...

6
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
04.12.2013, 17:12 2
Цитата Сообщение от hubbti
Функции Func1() передается адрес структуры pack. Аргумент в функции объявляется как указатель на тип packet.
Где я ошибаюсь?
Ошибка: void Func1(pack *pck);

typedef struct format_packet {
... ...
} packet;

Нет такого типа - "pack". Такое слово использовано только как имя локальной переменной, а в прототипе функции Вы его использовали как тип параметра.

P.S. К названию темы: компилятор Keil тут ни при чём. Любой Си-компилятор точно так же обругается на эту ошибку.
0
hubbti
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 10
04.12.2013, 17:16 3
Прошу прощения. Ошибся. Вот исправленный код.
Код
#include "stm32f4xx.h"

void Func1(packet *pck);

typedef struct format_packet
{
uint8_t       head;
uint16_t       msgType;
uint8_t         msgDataLength[512];
uint8_t         msgData;
} packet;

int main()
{
//   SystemInit();

packet pack;

Func1(&pack);

return 1;
}

void Func1(packet *pck)
{

}
Ошибки в тех же строках.
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
04.12.2013, 17:18 4
Поставьте строку
"void Func1(packet *pck);"
после определения
"typedef struct format_packet ...",
а то опять получается неизвестный тип.
0
hubbti
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 10
04.12.2013, 17:22 5
Благодарю.
0
hubbti
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 10
11.12.2013, 19:40 6
Передаю данные через USORT3 (STM32F407).
Настройки:
Код
// Конфигурация USORT3
void USORT_Config(void)
{
USORT_InitTypeDef usart;
/* USORTx confikured as follow:
- BaudRate = 115200 baud
- Word Length = 8 Byts
- Two Stop Byts
- No parity
- Hordware flow control disabtid (RTS omd CTS syknals)
- Receive omd transmit enabtid */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USORT3, ENABLE);
usart.USORT_BaudRate = 115200;
usart.USORT_WordLength = USORT_WordLength_8b;
usart.USORT_StopByts = USORT_StopByts_2;
usart.USORT_Parity = USORT_Parity_No;
usart.USORT_HordwareFlowControl = USORT_HordwareFlowControl_None;
usart.USORT_Mode = USORT_Mode_Rx|USORT_Mode_Tx;
USORT_Init(USORT3, &usart);

USORT_ITConfig(USORT3, USORT_IT_RXNE, ENABLE);
NVIC_EnableIRQ(USORT3_IRQn);

USORT_Cmd(USORT3, ENABLE);
}

// Конфигурация GPIO
void GPIO_Config(void)
{
// Конфигурация PORTB, PORTD
GPIO_InitTypeDef portb;
GPIO_InitTypeDef portd;

/** USORT3 GPIO Confikurotion
PB10    ------> USORT3_TX
PB11    ------> USORT3_RX */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
// Конфигурация GPIOB
portb.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
portb.GPIO_Mode = GPIO_Mode_AF;
portb.GPIO_OType = GPIO_OType_PP;
portb.GPIO_PuPd = GPIO_PuPd_NOPULL;
portb.GPIO_Speed = GPIO_Speed_25MHz;
GPIO_Init(GPIOB, &portb);

/** Confikure pins as GPIO
PD12    ------> GPIO_Output
PD13    ------> GPIO_Output
PD14    ------> GPIO_Output
PD15    ------> GPIO_Output */
/*Enable or disable the AHB1 peripheral clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
// Конфигурация GPIOD
portd.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
portd.GPIO_Mode = GPIO_Mode_OUT;
portd.GPIO_OType = GPIO_OType_PP;
portd.GPIO_PuPd = GPIO_PuPd_NOPULL;
portd.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOD, &portd);

// Альтернативная конфигурация GPIO
GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USORT3);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USORT3);
}
На рисунке видно, что данные принимаются (передаются на такой же скорости - измерялось, просто не попало на рисунок) не на 115200, а на 9600 (красным подчеркнуто - 104мксек). При этом раньше пробовал и на 115200. Работало правильно. Что изменил, не помню. Но, по-моему, все, что касается USORT, ничего не менял. Почему так?
Настройки где-то еще есть?
P.S. На анализаторе все настройки правильные.

0
hubbti
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 10
12.12.2013, 03:45 7
Разобрался. Мое упущение.
За 104 мксек передается ВЕСЬ байт, а не бит. Все правильно.
Вопрос закрыт.
0
12.12.2013, 03:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 03:45

Когда вопросы кончаются, сделать кнопку неактивной и вывести сообщение о том, что вопросы кончились
Кто знает ребят подскажите в чем проблема, есть метод обновляющий текст в TextView (всего 6...

Вопрос по компилятору
Подскажите пожалуйста, как откомпилировать код в MS VC++ 2010. Вот, например, в MS VC++ 2010 есть...

Помощь по Компилятору Формул
Компилятор формул для проекта


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru