ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
1037572 Топик полностью
teap0t (18.09.2020 11:45 - 16:55, просмотров: 509) ответил VLLV на Какой смысл имеет типизация константы не по месту ее применения, непонятно. А все непонятное неправильно.
Вопрос возник из-за такого кода (сразу предлагаю отвлечься от оскорбительного национализма в определениях): 
FLASH_Status FLASH_GetStatus(void)
{
   FLASH_Status FLASHstatus = FLASH_COMPLETE;

   if (( FLASH->SR & FLASH_FLAG_BSY ) == FLASH_FLAG_BSY ) {
      FLASHstatus = FLASH_BUSY;
   } else {
      if (( FLASH->SR & (uint32_t)FLASH_FLAG_WRPERR )!= (uint32_t)0x00) {
         FLASHstatus = FLASH_ERROR_WRP;
<...>

В двух соседних проверках для одного регистра, допускающего по документации 8-, 16- и 32-разрядное обращение, есть оба варианта: и с приведением типа, и без приведения. Я, естественно, полез в определения и обнаружил в паре заголовочных файлов такие строки:

#define FLASH_FLAG_WRPERR              FLASH_SR_WRPERR     /*!< FLASH Write protected error flag */

#define  FLASH_SR_WRPERR                     ((uint32_t)0x00000100)        /*!< Write protected error */

Дело это для меня новое, и я полез с вопросами к вам. Прошу более необходимого ногами не пинать.

Это я, здравствуйте. http://the-epic-file.com/bookshelf.htm