Keil提示:..\main.c(16): error: #18: expected a “)“

实验是使用寄存器点亮LED

main.c代码

#include "stm32f4xx.h"
void delay(volatile uint32_t n)
{
	for(;n!=0;n--);
}
int main(void)
{
	//第一步:打开时钟
	RCC_AHB1ENR|=(1<<5);

	//第二步:配置引脚模式
	GPIOF_MODER  &=~(0b11<<(9*2));//首先,清零
	GPIOF_MODER  |=((1)<<(9*2));//在进行配置,01:通用输出模式
	
	//第三步:点灯
	while(1){
		GPIOF_ODR|=(1<<9);//置1,点灭
		delay(0xfffff);
		GPIOF_ODR&=~(1<<9);//清0,点亮
		delay(0xfffff);
	}
	
}
// 函数为空,目的是为了骗过编译器不报错
void SystemInit(void){}

头文件代码:

#ifndef __STM32FXX_H
#define __STM32FXX_H

#define uint32_t unsigned int   
#define uint16_t unsigned short 

/* 片上外设基地址 */
#define PERIPH_BASE ((unsigned int)0x40000000)
/* 总线基地址 */
#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)
/* 总线基地址 */
#define GPIOF_BASE      (AHB1PERIPH_BASE + 0x1400)
/*RCC 外设基地址 */
#define RCC_BASE (AHB1PERIPH_BASE + 0x3800)
/*RCC 的 AHB1 时钟使能寄存器地址, 强制转换成指针 */
#define RCC_AHB1ENR (*(unsigned int*)(RCC_BASE+0x30))

#define GPIOF_MODER   *(unsigned int*)(GPIOF_BASE+0x00)
#define GPIOF_ODR     *(unsigned int*)(GPIOF_BASE+0x14)


#endif /*__STM32FXX_H*/

使用的芯片是STM32F407ZGT6,keil版本是:μVision V5.30.0.0,汇编器的配置是

结果编译报错,具体如下:

网上的方法试过了,这个:Keil5编程error: #18: expected a “)“问题解决,但是没解决

于是我就试试使用升级编译器,使用Compiler6。

嘿,错误消失了,而且实验现象符合预期,太棒了!

回去看,用Compiler 5怎么就报错呢。我就把那一行注释掉了,结果错误就没了,那么肯定是这一行有问题。仔细分一下,把0b11用3代替,在编译错误就消失了

GPIOF_MODER  &=~(3<<(9*2));//首先,清零

 

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值