完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
库函数:方便,但效率低,调用文件多
寄存器:高效,芯片资源最大化运用,但繁琐 //使用寄存器方式控制最小系统板上 PB5 引脚 LED 灯闪烁 #include "IOSTM8S103F3.h" /* int main( void ) { unsigned int i; //PB5:0010 0000 PB_DDR |= 0X20; //OUT PB_CR1 |= 0X20; //PUSH-PULL PB_CR2 |= 0X00; //LOW-SPEED while (1) { PB_ODR ^= 0X20; //SET 0 ^=:两同为0,不同为1 for (i = 0 ; i < 60000 ; i++); } return 0; } */ int main( void ) { unsigned int i; //PB5:0010 0000 PB_DDR_DDR5 = 1 ; PB_CR1_C15 = 1 ; PB_CR2_C25 = 0 ; while (1) { PB_ODR_ODR5 = 1; //SET 1 for (i = 0 ; i < 60000 ; i++); PB_ODR_ODR5 = 0; //SET 0 for (i = 0 ; i < 60000 ; i++); } return 0; } 复习: |= :两0为0,否则为1。 int a = 5; // 0000 0101 int b = 3; // 0000 0011 a |= b; // 0000 0111 两个二进制对应位为0时该位为0,否则为1。 拿5的二进制 0000 0101 和 3的二进制 0000 0011 进行|运算,后三位的的对应位都不是同时等于0,所以最终结果为 0000 0111 也就是7的二进制。 &=:两1为1,否则为0。 int a = 5; // 0000 0101 int b = 3; // 0000 0011 a &= b; // 0000 0001 两个二进制对应位都为1时,结果为1,否则结果为都0。拿5的二进制 0000 0101 和 3的二进制 0000 0011 进行&运算,只有最后一位都为1,则最终结果为 0000 0001 也就是1的二进制。 ^=:两同为0,不同为1。 int a = 5; // 0000 0101 int b = 3; // 0000 0011 a ^= b; // 0000 0110 两个二进制对应位相同时,结果为0,否则结果为1。拿5的二进制 0000 0101 和 3的二进制 0000 0011 进行^运算,1-5位对应位都是0所以1-5位都为0,第8位都为1所以第8位也为0,其他的对应位都不相等所以为1,则最终结果为 0000 0110 也就是6的二进制。 |
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4085 浏览 18 评论
1171浏览 3评论
602浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
594浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2331浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 07:28 , Processed in 2.190926 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号
|