简体   繁体   English

错误:一元'*'的无效类型参数(有'int')

[英]error: invalid type argument of unary '*' (have 'int')

#define NVIC_IPR_BASEADDR          (volatile)((uint32_t *)0XE000E400)

#define No_PR_Bits_Implemented     4

void GPIO_IRQPriorityConfig(uint8_t IRQNumber, uint8_t IRQPriority); 

int main(void)
{

void GPIO_IRQPriorityConfig(uint8_t IRQNumber, uint8_t IRQPriority) 

{

    //1. First lets find out the IPR register.

    uint8_t iprx= IRQNumber/4;
    uint8_t iprx_section= IRQNumber%4;
    uint8_t shift_amount = (8 * iprx_section) + (8- No_PR_Bits_Implemented);

    *(NVIC_IPR_BASEADDR + iprx * 4 ) |= (IRQPriority << shift_amount); //error line

}

}
#define NVIC_IPR_BASEADDR          (volatile)((uint32_t *)0XE000E400)

That does not result in a pointer type.这不会导致指针类型。 The outer (volatile) has no explicit type and will thus result in the type defaulting to int .外部(volatile)没有显式类型,因此将导致类型默认为int With gcc for example, should get a warning similar to the following:以 gcc 为例,应该会收到类似于以下内容的警告:

warning: type defaults to ‘int’ in type name [-Wimplicit-int]

The correct define should be:正确的定义应该是:

#define NVIC_IPR_BASEADDR          ((volatile uint32_t *)0XE000E400)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM