题库分类
网课答案
APP
退出
登录
注册
财会类
银行业专业人员(初级)
注册税务师(CTA)
注册资产评估师
中级会计职称
中级经济师
初级会计职称
注册会计师(CPA)
中级统计师
初级统计师
会计从业证
理财规划师
价格鉴证师
初级经济师
统计从业资格
中级审计师
公务员
公务员(国考)
公务员(省考)
军转干
警察招考
公选
公务员网络培训
国家电网
执法资格
军队文职
特岗教师
税务稽查
公安消防
事业单位
事业单位招聘
事业单位工勤人员
职业资格
证券从业资格
教师资格
社会工作者
导游资格
管理咨询师
期货从业资格
企业法律顾问
司法考试
人力资源
秘书资格
心理咨询师
营销师
国际商务
公共营养师
行政执法资格
行业知识
医疗/健康
法律法规
考古/收藏
社会科学
管理/战略
教育/培训
创业/投资
文体/艺术
市场/营销
工程/建筑
媒体/传播
生活/时尚
理财/金融
情感/心理
财会/税务
医卫类
药学(中级)
主管护师 (中级)
内科主治
执业药师
临床执业医师
护士资格证
药学(师)
中医助理医师
中西医结合执业医师
口腔助理医师
临床助理医师
中医执业医师
外科主治
妇产科主治
初级护师
建筑工程类
一级建造师
二级建造师
安全工程师
监理工程师
咨询工程师
造价工程师
房地产估价师
土地估价师
城市规划师
投资项目管理
结构工程师
房地产经纪人
初级质量工程师
助理造价工程师
物业管理师
外贸类
报关员
物流师
报检员
单证员
外销员
跟单员
国际商务师
货运代理
当前位置:
首页
>
超星
>
中断与定时器应用
简答题
以下代码实现了Time1中断。1)试参考这些代码,改Time1中断为PWM2中断,控制LED灯闪亮及蜂鸣器声响(实验成功后记录现象说明修改方法)?2)试解读这些代码的功能,假设定时器时钟源PCLK频率为150MHz,试修改代码使蜂鸣器不断发出1秒响停3秒的声音?#include "s5p6818.h"extern void printf (const char *fmt, ...);void led_d7_toggle(void);void do_irq(void){ unsigned int num_irq;static unsigned int irq_cnt=0;// 获取中断号num_irq = GICC_IAR & (0x3FF << 0);switch(num_irq){case 56:{GICD_ICPENDER.ICPENDER1 = GICD_ICPENDER.ICPENDER1 | (0x1 << 24);irq_cnt++;printf("timer irq %d\r\n",irq_cnt);//led灯闪烁led_d7_toggle();//清空定时器1中断标志位TIMER.TINT_CSTAT |=(1<<6);}break;default:break;}// 清除所有中断GICC_EOIR = GICC_EOIR & (~(0x3FF << 0)) | num_irq;}//全局中断控制分配初始化void gic_dist_init(void){//GIC监测外设中断并将挂起中断转达到CPU接口的控制位,为0即关闭GICD_CTRL = 0x0;//具体的中断使能控制位,占1比特。为1即打开GICD_ISENABLER.ISENABLER1 = GICD_ISENABLER.ISENABLER1 | (0x1 << 24);//具体的中断优先级控制位,占8比特。数值小优先级高。GICD_IPRIORITYR.IPRIORITYR14 = GICD_IPRIORITYR.IPRIORITYR14 & (~(0xFF << 0)) | (56 << 0);//具体的中断目标分配控制位,占8比特。为1即选中该CPUGICD_ITARGETSR.ITARGETSR14 = GICD_ITARGETSR.ITARGETSR14 & (~(0xFF << 0)) | (0x1 << 0);//具体的中断模式控制位,占2比特GICD_ICFGR.ICFGR3 = GICD_ICFGR.ICFGR3 & (~(0x3 << 16));//打开分配器总开关GICD_CTRL = 0x1;}void gic_cpu_init(void){GICC_PMR = 0xf0;GICC_CTRL = 0x1;}void s5p6818_irq_init(void){gic_dist_init();gic_cpu_init();}void Timer_init(void){// Timer1,作定时器中断// 2. 设置一级预分频值为249(250分频)TIMER.TCFG0 = (TIMER.TCFG0 & (~(0xFF << 0))) | (249 << 0);// 3. 设置二级与分频值,进行16分频TIMER.TCFG1 = (TIMER.TCFG1 & (~(0xF << 4))) | (0x4 << 4);// 4. 设置TIMER1的最终周期;TIMER.TCNTB1 = 37500;// 6. 打开手动加载TIMER.TCON = TIMER.TCON | (0x1 << 9);// 7. 关闭手动加载TIMER.TCON = TIMER.TCON & (~(0x1 << 9));// 8. 打开自动加载TIMER.TCON = TIMER.TCON | ((0x1 << 11));TIMER.TINT_CSTAT |=(1<<6)|(1<<1);// 9. 使能TIMER定时器TIMER.TCON = TIMER.TCON | ((0x1 << 8));}void led_d7_toggle(void){GPIOB.OUT = GPIOB.OUT ^ (0x1<<26);}void Led_Init(void){// 1. 设置引脚功能为GPIO功能,查看芯片手册2.3.1章节GPIOB.ALTFN1 = GPIOB.ALTFN1 & (~(0x3 << 20));GPIOB.ALTFN1 = GPIOB.ALTFN1 | (0x1 << 20);// 2. 设置引脚为输出功能GPIOB.OUTENB = GPIOB.OUTENB | (0x1 << 26);GPIOB.OUT = GPIOB.OUT & (~(0x1 << 26));}int main(void){printf("Hello Teacher.He\r\n");printf("This is timer irq test\r\n");Led_Init();s5p6818_irq_init();Timer_init();while(1){}return 0;}
查看答案
1
2
3
下一页
登录
登录
忘记密码
|
立即注册
注册
获取验证码
注册
已有账号 立即登录
忘记密码
获取验证码
找回密码
立即注册
套餐购买
该问题答案仅对会员开放,欢迎开通会员
¥
19.9
0.64/天
1个月(不限次)
¥
19.9
1000次
(不限时)
¥
29.9
0.32/天
3个月(不限次)
¥
59.9
0.16/天
1年(不限次)
请选择支付方式
微信支付
支付宝支付
立即支付
39.8
遇到问题请联系
在线客服
请不要关闭本页面,支付完成请点击
【支付完成】
按钮
支付完成
取消订单
遇到问题请联系
在线客服