寄存器配置有先后顺序
来源:互联网 发布:淘宝9块9包邮专区 编辑:程序博客网 时间:2024/04/29 04:49
这两天研究c++写stm32程序,最先就从类开始,写了一些空的框架,一编译竟然通过了。
然后就开始写内容,不想用库,就捣鼓寄存器来实现控制led灯。
我是红牛开发板,用PF6控制,于是乎查资料写了如下初始代码
GPIOF->CRL = (2<<24)|(0<<26);
RCC->APB2ENR = RCC_APB2ENR_IOPFEN;
然后定义一个对象并调用On()方法(自己写的类的公共方法),代码是
GPIOF->ODR &=~(1<<6);//(低电平亮)
编译下载,结果让我失望呀。睡觉,第二天再来。
第二天继续,在网上找操作寄存器控制io口的例子,找到一个
RCC->APB2ENR|=1<<3;
GPIOB->CRL&=0XFF0FFFFF;
GPIOB->CRL|=0X00300000;
GPIOB->ODR&=~(1<<5);
编译没错,下板子上测试,用示波器看PB5果然有变化。
于是将我的代码改为
GPIOF->CRL &=0XF0FFFFFF;
GPIOF->CRL |= 0X0300000;
RCC->APB2ENR = RCC_APB2ENR_IOPFEN;
在试,还是不对,这就纳闷了,这时我怀疑是
RCC->APB2ENR = RCC_APB2ENR_IOPFEN;
的问题,就将正确的
RCC->APB2ENR|=1<<3;
改为
RCC->APB2ENR = RCC_APB2ENR_IOPBEN;
也是对的这是我就邪恶了,我把
GPIOB->CRL&=0XFF0FFFFF;
GPIOB->CRL|=0X00300000;
GPIOB->ODR&=~(1<<5);
里面的B全部改为F。用示波器看PF5,有变化。然后改为
GPIOF->CRL &=0XF00FFFFF;
GPIOF->CRL |= 0X0330000;
GPIOF->ODR&=~(1<<6);
哈哈,灯亮了。这时对比一下原先的代码,就发现顺序问题,然后再验证,果然这个问题
- 寄存器配置有先后顺序
- qt connect 有先后顺序
- 包含头文件有先后顺序吗?
- tomcat配置与数据库启动先后顺序
- 关于lcd配置寄存器顺序。
- Mongodb文档中字段是否有先后顺序之分?
- if,else if语句块有先后顺序
- Spring依赖配置与自动装配的先后顺序问题
- 装修先后顺序
- 九个先后顺序
- 搞清九个先后顺序
- 脚本先后执行顺序
- ajax执行先后顺序
- ajax执行先后顺序
- 渲染先后顺序
- unity渲染先后顺序
- ajax执行先后顺序
- 成员初始化的先后顺序
- (原)Cisco三层交换机SVI(VLAN间路由)
- (原)对冲突域和广播域的分割
- VOA美国之音听力下载,天天实时更新
- Linux进程
- Virtualbox(Linux)挂载共享文件教程——菜鸟级
- 寄存器配置有先后顺序
- uva 10558 A Brief Gerrymander (dp记忆化搜索)
- 查杀系统进程
- (原)HTML页面基本格式
- (原)C#连接ACCESS2007
- poj2186我的第一个强连通题目
- 经典的interactive matting 方法
- ASUS N14U 源码编译过程分析(下)
- 程序员--桃花庵