s3c2410试题

更新时间:2023-05-16 10:31:58 阅读: 评论:0

一、配置GPIO端口,要求C端口高八位输出,低八位输入,定时器TI,T3输出有效,采用SPI串口输出,配置相应的控制寄存器。
#include<2410lib.h>
#define rGPBCON (*(volatile unsigned *)0x56000010)
#define rGPCCON (*(volatile unsigned *)0x56000020)
#define rGPHCON (*(volatile unsigned *)0x56000040)
Void GPIO_init()
{
    rGPCCON = 0x00005555;
    rGPBCON = 0x28;
    rGPHCON = 0xa0;
}
二、S3C2410 的最小系统由哪几部分组成,并画出简图(总线形式)。
三、用C编程实现利用S3C2410A  A/D 控制器的AIN7通道采集一个范围在0-3V的电压。
#include<2410lib.h>
#include "sys_init.h"
#define UINT8T  unsigned char
#define UINT16T unsigned short
#define ADC_FREQ 2500000
#define PCLK (202800000/4)
#define rADCCON (*(volatile unsigned *)0x58000000)
#define rADCDATA0 (*(volatile unsigned *)0x5800000c)
volatile UINT8T unPreScaler;
volatile char usEndTest;
void adc_test(void)
{
    Int i,j;
    UINT16T usConData;
    float usEndData;
    unPreScaler = PCLK/ADC_FREQ-1;
    rADCCON = (1<<14)|(unPreScaler<<6)|(7<<3)|(0<<2)|(1<<1);
新托福考试完全攻略// ADC分频允许+ADC分频值+AIN7+通常模式+自动启动下一次转换
    usConData = rADCDATA0 & 0x3FF;
    for(j=0;j<20;j++);
    {
        While(!(rADCCON  & 0x8000));
        usConData = rADCDATA0 &0x3ff;
        usEndData = usConData*3.0000/0x3ff;
`        usEndData = usEndData-(int) usEndData;
        for(i=0;i<4;i++);
        {
            usEndData = usEndData*10;
            usEndData = usEndData-(int) usEndData;
}
delay(10000);
}
}
void main()
{
    sys_init();                        // Initial s3c2410's Clock, Interrupt,Port and UART
       
    while(1)
    {
        adc_test();
    }
vocal什么意思}
四、利用S3C2410X的GPE0-3控制LED,画出相关电路图,要求:LED 从0-3顺序点亮,中间延时时间自己决定。
// 头文件包含,这样子就可以访问GPIO的寄存器了
#include "2410lib.h"
#include "sys_init.h" //包含用于初始化系统时钟的函数
int main()
{      int i;
    sys_init();                        // 初化系统时钟
    // 端口初始化
rGPECON=0x55;// GPE0-3作为输出端口
rGPEUP=0xff;// GPE石油端口都不加上拉电阻
    while(1)
    {
        rGPEDAT=0xE0 ;//点亮GPE4(LED1)
for(i=0;i<100000;i++);              // 延时
rGPEDAT=0xC0 ;//点亮GPE4、GPE5(LED1、LED2)
for(i=0;i<100000;i++);              // 延时
sanagirGPEDAT=0x80 ;//点亮GPE4、GPE5、GPE6(LED1、LED2、LED3)
for(i=0;i<100000;i++);              // 延时
rGPEDAT=0x00 ;//点亮GPE4、GPE5、GPE6、GPE7(LED1、LED2、LED3、LED4)
for(i=0;i<100000;i++);              // 延时
rGPEDAT=0xF0 ;//所有LED全灭
for(i=0;i<100000;i++);              // 延时
}
}
五、分析指令功能,并加注释。
START                  //表示程序段的开始
LDR    R0,  =addr  //使用LDR伪指令装载addr的地址到寄存器R0
MOV    R1, #10    //把10传送到寄存器R1,也就是给R1赋值
MOV    R2, #20    //把20传送到寄存器R2,也就是给R2赋值
ADD        R1, R1,R2  // R1= R1+ R2  求和并赋值到R1
STR        R1,[R0]    //保存变量,把寄存器R1中的字保存到R0
B        START      //表示跳转至START处重新执行
END              //结束
六,指出下列指令的寻址方式。
LDR        R0,[R1,#4]!        寄存器间接寻址
LDMIA  R1,{R0,R2,R5}          多寄存器寻址
STMFD    SP! {R1-R7,LR}        堆栈寻址
LDMIA      R0! {R2-R9}          块拷贝寻址
前端web框架
BL    SUBR                  相对寻址
七、S3C2410微处理器,假设PCLK=40MHZ,(20分)
1、若需要得到1MHZ的定时器输入时钟频率,时钟分频值为8,则预分频值是多少?
因为:
1=(40/(x+1))/8(课本243公式)    ---> x=4 预分频值是4
2、使用定时器0产生占空比为60%,周期1000us的PWM信号,求TCMPB0、TCNTB0
的初始值。环球雅思官网
因为:
PWM输出时钟频率=fTclk/ TCNTBn
PWM输出信号占空比(即高电平持续时间所占信号周期的比例)= TCMPBn/ TCNTBn
可得(TCNTB0=1000,TCMPB=600)
3、用C语言编写以上实现PWM的程序(相关寄存器地址可以使用头文件包含)
#include "s3c2410.h"offer是什么意思
//PWM定时初始化程序段
void initTimer0(void)
{
TCFG0 = 0x04; // prescaler = 4
TCFG1 = 0x2;// divider = 1/8
TCON  = 0x09;      // 自动加载,清“手动更新”位,启动定时器0
TCNTB0 = 0x03E8;  // TCNTB0=1000
混淆英语TCMPB0 = 0x0258;  // TCMPB=600
}
造价工程师报考条件

本文发布于:2023-05-16 10:31:58,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/652935.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   时钟   输出   寻址   端口
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图