嵌入式系统原理与设计

发布 2022-10-21 08:54:28 阅读 7522

上节课余留问题:

标准做法:全部清0

部分置1置1:位或掩码。

清0:位与掩码的反码。

题:32位,17到10位设成0101…01

解:gpbcon&=~0x0003fc00

gpbcon|=0x00015400

注:置0变1(加上~就变成0了))

正文:使用按键控制led

电路图。k1闭合,gpb11低电平。

k1断开,gpb11高电平。

gpgdat11位,当gpb11为0时,低电平;当gpg11为1时,高电平。

考试肯定考的20分编程题!!!

#define gpbcon(*(volatile unsigned long*)0x56000010)

#define gpbdat(*(volatile unsigned long*)0x56000014)

#define gpgcon(*(volatile unsigned long*)0x56000050)

#define gpgdat(*(volatile unsigned long*)0x56000054)

#define gpfcon(*(volatile unsigned long*)0x56000060)

#define gpfdat(*(volatile unsigned long*)0x56000064)

#define gpb5_out 1<<(5*2)

#define gpb6_out 1<<(6*2)

#define gpb7_out 1<<(7*2)

#define gpb8_out 1<<(8*2)

#define gpg11_in ~(3<<(11*2))

#define gpg3_in ~(3<<(3*2))

#define gpf2_in ~(3<<(2*2))

#define gpf0_in ~(3<<(0*2))

int main(){

unsigned long dwdat;

gpbcon=gpb5_out| gpb6_out| gpb7_out| gpb8_out;

gpgcon=gpg11_in&gpg3_in;

gpfcon=gpf2_in&gpf0_in;

while(1){

dwdat=gpgdat;

if(dwdat&(1<<11)) 如果表达式为真值,表示k1没被按下,与gpg11相连。

gpbdat|=(1<<5); led1熄灭。

elsegpbdat&=~1<<5); led1点亮。

if(dwdat&(1<<3)) 如果表达式为真值,表示k2没被按下,与gpg3相连。

gpbdat|=(1<<6); led2熄灭。

elsegpbdat&=~1<<6); led2点亮。

dwdat=gpfdat;

if(dwdat&(1<<2)) 如果表达式为真值,表示k3没被按下,与gpf2相连。

gpbdat|=(1<<7); led3熄灭。

elsegpbdat&=~1<<7); led3点亮。

if(dwdat&(1<<0)) 如果表达式为真值,表示k4没被按下,与gpf0相连。

gpbdat|=(1<<8); led4熄灭。

elsegpbdat&=~1<<8); led4点亮。

return 0;

解读程序:上拉电阻寄存器:gpbup——0x56000018

gpgup——0x56000058

gpfup——0x56000068

a组00,b组10,c组20,以此类推,f组60)

#define gpb5_out 1<<(5*2)——第10位掩码置1

#define gpg11_in ~(3<<(11*2))—第(11向左移22位)22位和第23位的掩码清0

dwdat作用——临时保存gpgdat和gpfdat

out——输出引脚。

in——输入引脚。

问题:第10,12,14,16位是1,其它都是0了,变成输入引脚了。

作业:如何把第10,12,14,16位置1而其它不变成输入引脚?(22,23位,6,7位,4,5位,0,1位都是输入引脚,是所需的,而其它不需要。)

答:gpbcon&=~0x00c3fcf3

gpbcon|=0x00015400

gpbcon&=~0x00c000c0

gpbcon&=~0x00000033

分析:gpbcon和上课讲的一样;gpgcon只需将22,23位和6,7位置0;gpfcon只需将4,5位和0,1位置0;下图是汇总画的,只为理解过程,不是答案。

下节课交三条语句,其它不用写。

k1按下,gpgdat11为低电平,dwdat值为0,第11位值为0,位与11位的掩码得0;

k1断开,gpgdat11为高电平,dwdat值为1,第11位值为1,位与11位掩码得1;

判断某位是1还是0的方法:与上该位的掩码。

dwdat&(1<<2)

第二章嵌入式存储器。

神装工作站。

嵌入式嵌入式系统原理与设计

第六章 iic总线。一 iic总线介绍 i2c总线 1.结构。2.工作原理 a b 主机 主设备 负责生成scl时钟,同时负责发出其实信号s和终止信号p 从机 从设备 被主机寻址的器件。1 a检测i2c总线是否 空闲 如果空闲 高 a发出起始信号 scl高,sda 2 寻址选择目标器件b,发送7位地...

嵌入式嵌入式系统原理与设计

课前提问 xscale 内核,intel公司。arm7 内核,第七个版本。armv5te 指令集,v5版本,加入16位thumb指令集,加入dsp指令集。cortex m3 内核,arm公司,arm11之后开始以cortex命名 5.几款arm处理器内核比较 arm11比arm10主频高,能耗低,所...

嵌入式嵌入式系统原理与设计

课前复习 sdram 突发传输同一行起始地址。norflash 读 ce 低 oe 低 we 高 a0 a18 d0 d7 擦出写1 片 6个周期 6s 块 6个周期 0.7s 写写04个周期 ain 9 s 字节编程din nand flash 4096块 32页 512 16 字节。64m 2m...