реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> варнинг Keil c99
Метценгерштейн
сообщение Feb 3 2015, 14:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079






почему-то ему не нравится данный код, но это только варнинг
Go to the top of the page
 
+Quote Post
Opex
сообщение Feb 3 2015, 15:11
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574



Нужно добавить объявление этой функции до ее использования.

Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 3 2015, 15:45
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



И хедер не видит - прописать в путь поиска
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 3 2015, 18:00
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



с хидером не все так просто- он есть в путях поиска. Он ругается на содержимое этого хидера, а не на то, что не находит его. И во втором скрине видно, что внутри этой ф-ии ошибка. Как-то не так, вероятно, надо использовать noop эти. Хотя, это пример из официальной поставки с отладочной платой.
Go to the top of the page
 
+Quote Post
Opex
сообщение Feb 3 2015, 18:13
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574



Какую ошибку пишет?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 3 2015, 18:16
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Так c99 отключите, и компилируйтесь.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 3 2015, 19:08
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Цитата(Opex @ Feb 3 2015, 21:13) *
Какую ошибку пишет?

ошибку завтра смогу посмотреть какую пишет.
А если хочу на С99 писать? Никак что ли? Это же не решение.
Go to the top of the page
 
+Quote Post
Opex
сообщение Feb 3 2015, 19:11
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574



Так она и варнинг выдает из-за того, что функцию не видит, поскольку в ней ошибка. Надо сверху вниз проблемы решать.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2015, 19:13
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Метценгерштейн @ Feb 3 2015, 22:08) *
А если хочу на С99 писать? Никак что ли? Это же не решение.

Найдите, как ASM-функции пишутся на нем, и поправьте хидер, чтобы функция стала компилироваться. В общем, правьте хидер до устранения ошибки в нем. Варнинг сам устранится. Что хоть за ошибка то там?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 3 2015, 19:43
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



а разве тело функции можно писать в хедере? wink.gif
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 3 2015, 20:03
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Цитата(SM @ Feb 3 2015, 22:13) *
Найдите, как ASM-функции пишутся на нем, и поправьте хидер, чтобы функция стала компилироваться. В общем, правьте хидер до устранения ошибки в нем. Варнинг сам устранится. Что хоть за ошибка то там?

ошибку завтра скажу- она на работе осталась

писать ф-ю в хидере можно, но это не правильно, конечно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 3 2015, 20:45
Сообщение #12


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Метценгерштейн @ Feb 3 2015, 22:08) *
А если хочу на С99 писать? Никак что ли? Это же не решение.

Если писать, то писать. А если использовать пример, то это другое.
Я ничего криминального не увидел. Ассемблерная функция вот так у меня работает. С99, естественно.
Код
__asm void HardFault_Handler(void)
{
  TST LR, #4
  ITE EQ
  MRSEQ R0, MSP        ; Main Stack was used, put MSP in R0
  MRSNE R0, PSP        ; Process Stack was used, put PSP in R0
  LDR R0, [R0, #24]    ; Get stacked PC from stack

  LDR R1, =0x40020418    ; GPIOB->BSRR
  MOVS R2, #0x0002    ; Bit 2
  STRH R2, [R1, #2]    ; Reset bit (LED_ON)
  B .
}

Только ссылка на нее идет из стартап-файла, тоже ассемблерного.
Go to the top of the page
 
+Quote Post
x893
сообщение Feb 3 2015, 21:29
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Совсем не обязательно это помнить наизусь.
Есть описание, help, примеры, device pack.
Несколько минут можно потратить и посмотреть.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 4 2015, 06:57
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079




вот что пишет на варнинг

логика такая-
вызывается ф-я
nrf_delay_us(999);
Код
#include <stdio.h>
#include "compiler_abstraction.h"
#include "nrf.h"
#include "nrf_delay.h"

/*lint --e{438} "Variable not used" */
void nrf_delay_ms(uint32_t volatile number_of_ms)
{
    while(number_of_ms != 0)
    {
        number_of_ms--;
        nrf_delay_us(999);
    }
}


ее прототип есть в хидере, что
#include "nrf_delay.h"

так что- прототип как бы есть.

а вот в самом хидере уже на нее выскакивет варнинг
Код
static  __ASM void __INLINE nrf_delay_us(uint32_t volatile number_of_us)
{
loop
        SUBS    R0, R0, #1
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        BNE    loop
        BX     LR
}

фото варнинга


так что что-то объявление в ф-ии ему не нравится.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 4 2015, 07:06
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Метценгерштейн @ Feb 4 2015, 09:57) *
так что что-то объявление в ф-ии ему не нравится.


Либо __ASM, либо __INLINE не определены (либо оба). Ищите, где они определяются, и добавьте соотв. хидер перед этим хидером. Либо замените их __asm и __inline (маленькими буквами).

Либо сами напишите в начале файла

#define __ASM __asm
#define __INLINE __inline
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016