Jump to content

    

Запись чтение в встроенную флеш память stm32 с HAL библиотекой

uint8_t R1 = 0;//8 bit word

 uint8_t  read_byte(uint32_t addr)
        {

          return (volatile uint8_t *)addr;
        }

  R1 = read_byte(START_ADDR_USER_PAGE + 0);

По отладчику показывает ноль. Хотя там у меня по STM32 ST-Link Utility значение 0xEE.

 В чем ошибка?

Share this post


Link to post
Share on other sites
11 минут назад, Olegus сказал:

В чем ошибка?

В том, что

return *(volatile uint8_t *)addr;

а не

return (volatile uint8_t *)addr;

 

Share this post


Link to post
Share on other sites
8 минут назад, Arlleex сказал:

В том, что


return *(volatile uint8_t *)addr;

а не


return (volatile uint8_t *)addr;

 

Ну мне так выше подсказали или я не правильно понял?!((

Share this post


Link to post
Share on other sites
3 минуты назад, Olegus сказал:

Ну мне так выше подсказали или я не правильно понял?!((

- Ты суслика видишь?
- Нет.
- Я тоже нет. А он есть!

 

Внимательно мое сообщение перечитайте.

Share this post


Link to post
Share on other sites

Ошибка в том, что я был невнимателен. Arlleex и компилятор правы, возвращать надо не сам указатель (конечно же), а значение, на которое он указывает.

Share this post


Link to post
Share on other sites
4 часа назад, Olegus сказал:

Почему у меня ругается(warrning) на Вашу функцию ? 

return makes integer from pointer without a cast [-Wint-conversion] 

потому что там должно быть return *(volatile uint8_t *)addr;

 

Ой, не заметил, что началась новая страница

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now