STM32位带操作实现过程解析

编辑这篇文档时候,听说相关的解析过程在《Cortex-M3权威指南》里有详细讲解。

前几日被一个跑马灯语句勾引

LED1=!LED1;

于是深入探究一下这句话的实现过程。

#include "led.h"
#include "delay.h"
#include "sys.h"
#define LED0 PAout(8)    // PA8
#define LED1 PDout(2)    // PD2    int main(void){    delay_init();            LED_Init();              while(1){LED0=0;LED1=1;delay_ms(300);     LED0=1;LED1=0;delay_ms(300);    
    }}

关于PAout(8)是实现位带操作的最终封装形式,在sys.h中定义为

#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //输出
#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //输入

#define之间传递的是n这个参数

再去查看BIT_ADDR的以及GPIOA_ODR_Addr定义

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 

最终的实现过程就在这三句里面。

转载于:https://www.cnblogs.com/fanghaiyunji/p/9795944.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 举例说明attr()的使用场景

[css] 举例说明attr()的使用场景 css content 的 attr() 呀&#xff0c;开始还以为是 jquery 的 attr()可以用于 tooltips可以用于多个内容文本替换&#xff0c;比如菜单效果存放 i18n 信息总的来说&#xff0c;是将一些文本存在 html 中&#xff0c;在 css 中可以被使用。个人…

easyui-datebox禁止手动输入

方式 1<input name"myname" id"myid" type"text" class"easyui-datebox" editable"fasle" />关键就在于editable"fasle"这个属性&#xff0c;这样用户就只能通过鼠标点击输入日期了。方式2$(#myid).datebox…

JDK 1.5新特性

1.可变参数 public void add(int... nums){int sum 0;for(int i0; i<nums.length; i){sum nums[i];}System.out.println(sum); } 注意&#xff1a;当有多种参数时&#xff0c;可变参数放在最后 2.foreach public void add(int[] nums){int sum 0;for(int num : num…

[css] 你有使用:valid和:invalid来校验表单吗?

[css] 你有使用:valid和:invalid来校验表单吗&#xff1f; 很不好控制&#xff0c;拿必填来举例&#xff0c;:invalid 标红。 初始时就红的&#xff0c;那 :focus:invalid 吧&#xff0c;blur 就不标了&#xff1b; 刚 focus 就标红&#xff0c;不见得是设计想要的&#xff0c…

java EE : tomacat 基础

tomacat 目录结构 conf 配置文件 server.xml 转载于:https://www.cnblogs.com/Lumia1020/p/9802850.html

[css] 使用css写一个水平翻转文字的效果

[css] 使用css写一个水平翻转文字的效果 letter-spacing: -2em; box-reflect: below;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Easyui笔记:jquery执行append后input的验证失效解决方案

$(input[type!"hidden"],select,textarea,$("#表单ID")).each(function(){//执行验证器初始化$(this).validatebox(); }); 参考&#xff1a;http://blog.csdn.net/boybruce/article/details/51251695

[css] 举例说明:not()的使用场景有哪些

[css] 举例说明:not()的使用场景有哪些 /* 子级之间留 10px 空隙 */ .gap-right-10 > :not(:last-child) {margin-right: 10px; }/* 有数据时加上标题 */ .list-wrap:not(:empty):before {content: attr(data-title); }/* flex 容器中都不压缩宽度 */ .flex-row {display: …

javascript中的字符串和数组的互转

javascript中的数组转换成字符串用toString()&#xff0c;或者用join()。 将数组和字符串用连接&#xff0c;赋给一个变量&#xff0c;这个变量自动转变成字符串了。 字符串转换成数组用split(,) <!DOCTYPE html> <html lang"en"><head><meta c…

[css] 怎么让div中的图片和文字同时上下居中?

[css] 怎么让div中的图片和文字同时上下居中&#xff1f; <div><img src"./"/><label>文字内容</label> </div><style>img {vertical-align: middle; } </style>给 img 设置 vertical-align: middle; 并且 vertical-alig…

接口测试实例(jmeter)

Jmeter 安装说明 https://jingyan.baidu.com/article/acf728fd68e7bef8e510a3cb.html 1.从Apache Jmeter官网下载的版本&#xff08;需要Java版本是Java 8或以上&#xff09; 2.添加环境变量&#xff1a;jmeter的文件路径3.打开\bin\jmeter.bat&#xff0c;即可使用接口测试的一…

[css] 怎么使图片宽度自适应呢?

[css] 怎么使图片宽度自适应呢&#xff1f; 百分比 vw padding:百分比个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[css] 实现文本的竖向排版

[css] 实现文本的竖向排版 writing-mode: vertical-lr;/从左向右 从右向左是 writing-mode: vertical-rl;/ writing-mode: tb-lr;/IE浏览器的从左向右 从右向左是 writing-mode: tb-rl&#xff1b;/个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&a…

Mysql循环查询结果并设置排序编号

create procedure test()#申明存储过程 BEGIN #存储过程开始declare id int(11); #申明ID变量declare mysort int(11) default 1; #申明排序变量,并初始化1declare done boolean DEFAULT true; #申明循环变量#查询ID&#xff0c;并将news_detail_id设置到游标变量中declare cu…

字符串实例

package java15; import java.util.Scanner; public class Demo11 { public static void main(String[] args) {   Scanner inputnew Scanner (System.in);     String uname,pwd;       System.out.println("请输入用户名&#xff1a;");        …

Centos7解压Zip文件

一、安装支持ZIP的工具 yum install -y unzip zip 二、解压zip文件 unzip 文件名.zip 三、压缩一个zip文件 zip 文件名.zip 文件夹名称或文件名称

[css] 你有用过vw布局吗?和使用rem有什么区别?

[css] 你有用过vw布局吗&#xff1f;和使用rem有什么区别&#xff1f; vw/vh 是屏幕视图的百分比&#xff0c; rem 是根据 html的font-size 来设置的相对值。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一…

jboss eap 6.2 ear包 下使用log4j日志

被jboss7/eap的日志问题搞死了&#xff0c;查了好多资料&#xff0c;都是war包的&#xff0c;基本上使用jboss-deployment-structure.xml放到WEB-INF下&#xff0c;文件内容如下&#xff1a; 是我总是没法成功&#xff0c;最后查到是ear包的问题&#xff0c;和war的解决方式不同…

支付宝回调接口验签失败

按照支付宝的文档,调用rsaCheckV1的方法,他已经把方法封装的很透彻了&#xff0c;只需要将取到的参数Map(request.getParameterMap())集合放入即可。 但是验签一直不通过&#xff0c;查了很多资料&#xff0c;说公钥不对&#xff0c;应该使用支付宝公钥&#xff0c;不是应用公…

[css] 举例说明常用的cursor取值有哪些?

[css] 举例说明常用的cursor取值有哪些&#xff1f; 1、cursor: move; (移动) 2、cursor: pointer;(手型) 3、cursor: not-allowed;(禁用)个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与…