中级会员
 
- 积分
- 300
- 金钱
- 300
- 注册时间
- 2013-8-19
- 在线时间
- 0 小时
|
在跑马灯的试验中。我的LED端口是PE7-PE10。我将这个定义方式
GPIOE->CRH&=0XFFFFFFF0;
GPIOE->CRH|=0X00000003;//PE.8推挽输出
GPIOE->ODR|=1<<8; //PE.8输出高
GPIOE->CRH&=0XFFFFFF0F;
GPIOE->CRH|=0X00000030;//PE.9推挽输出
GPIOE->ODR|=1<<9; //PE.9输出高
GPIOE->CRH&=0XFFFFF0FF;
GPIOE->CRH|=0X00000300;//PE.10推挽输出
GPIOE->ODR|=1<<10; //PE.10输出高
改成
GPIOE->CRL&=0X0FFFFFFF;
GPIOE->CRL|=0X30000000;//PE.7 推挽输出
GPIOE->ODR|=1<<7; //PE.7 输出高
GPIOE->CRH&=0XFFFFF000;
GPIOE->CRH|=0X00000333;//PE.8-10推挽输出
GPIOE->ODR|=7; //PE.8-10输出高
效果一样。后来发现GPIOE->ODR|=7; 定义有错误,但是发现把GPIOE->ODR相关的语句全部注释掉
如此
GPIOE->CRL&=0X0FFFFFFF;
GPIOE->CRL|=0X30000000;//PE.7 推挽输出
//GPIOE->ODR|=1<<7; //PE.7 输出高
GPIOE->CRH&=0XFFFFF000;
GPIOE->CRH|=0X00000333;//PE.8-10推挽输出
//GPIOE->ODR|=7; //PE.8-10输出高
试验效果一样。这是怎么回事,ODR的定义与否都没有问题么
其次,如果要定义ODR,那么应该这样写么
GPIOE->ODR|=15<<7 ?
|
|
|
|
|
|
|