如下图,右侧为3.3V高电平电压,左侧对应PB5等,一共三个端口,对应三种颜色LED灯,要想让灯亮,即让对应端口输出0V电压,这样就产生了由右向左的3.3V压降。
举报
*(unsigned int *)0x40010C0C &=~(1<<0);
*(unsigned int *)0x40010C00 &=~((15)<<(4*0));
#include "stm32f10x.h" void delay(unsigned int i) { unsigned int j=0; for(j=0;j<=i;j++) {} } int main(void) { //PB5 0 1对应R G B while(1) { //打开GPIOB端口的时钟(绿色) *(unsigned int *)0x40021018 |=((1)<<3); //配置IO口为输出,CRL端口偏移地址为00,十进制的1,即为0001,左移0位 *(unsigned int *)0x40010C00 |=((1)<<(4*0)); //控制ODR寄存器,ODR偏移地址为0C *(unsigned int *)0x40010C0C &=~(1<<0); delay(500000); *(unsigned int *)0x40010C00 &=~((15)<<(4*0)); //打开GPIOB端口的时钟(蓝色) *(unsigned int *)0x40021018 |=((1)<<3); //配置IO口为输出,CRL端口偏移地址为00,十进制的1,即为0001,左移0位 *(unsigned int *)0x40010C00 |=((1)<<(4*1)); //控制ODR寄存器,ODR偏移地址为0C *(unsigned int *)0x40010C0C &=~(1<<1); delay(500000); *(unsigned int *)0x40010C00 &=~((15)<<(4*1)); //打开GPIOB端口的时钟(红色) *(unsigned int *)0x40021018 |=((1)<<3); //配置IO口为输出,CRL端口偏移地址为00,十进制的1,即为0001,左移0位 *(unsigned int *)0x40010C00 |=((1)<<(4*5)); //控制ODR寄存器,ODR偏移地址为0C *(unsigned int *)0x40010C0C &=~(1<<5); delay(500000); *(unsigned int *)0x40010C00 &=~((15)<<(4*5)); } } void SystemInit(void) { //函数体为空,没有用库函数,为了不报错 }
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
105
1379
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号