当前位置: 首页 > article >正文

第27篇 基于ARM A9处理器用C语言实现中断<三>

Q:基于ARM A9处理器怎样设计C语言工程,同时使用按键中断和定时器中断在红色LED上计数?

A:基本原理:设置HPS Timer 0和按键中断源,主程序调用set_A9_IRQ_stack( )函数设置中断模式的ARM堆栈指针,然后调用config_GIC( )函数配置GIC将HPS Timer 0和按键产生的中断发送到ARM处理器,接着调用config_HPS_timer( )配置HPS Timer 0使其产生某个周期的中断,调用config_KEYs( )函数配置按键端口,最后调用enable_A9_interrupts( )函数使能中断。

image-20241128102801326

主程序执行一段无限循环,将全局变量count的值写入红色LED。在HPS Timer 0中断服务程序中,将变量count和run的值相加再赋值给count,其中,run的值为0或1。每次按下按键时,按键中断服务程序中的全局变量run的值在1和0之间切换。当run=0时,count的值保持不变,当run=1时,count的值每0.25s增加1。

image-20241128102956181

编译下载程序到DE1-SoC开发板上,可以看到红色LED上显示的计数值每隔0.25秒递增1,10个红色LED从全熄灭到全点亮状态循环显示,按下任意KEY[3:0]其中任意一个按键会停止计数,再次按下任意一个按键会继续计数。


http://www.kler.cn/a/520733.html

相关文章:

  • 二分查找题目:寻找两个正序数组的中位数
  • gradle和maven的区别以及怎么选择使用它们
  • leetcode刷题记录(一百)——121. 买卖股票的最佳时机
  • python生成图片和pdf,快速
  • 国产编辑器EverEdit - 大纲视图
  • 网易Android开发面试题200道及参考答案 (下)
  • 配电自动化系统“三区四层”数字化架构
  • HTML<hgroup>标签
  • 【HuggingFace项目】:Open-R1 - DeepSeek-R1 大模型开源复现计划
  • Crawl4AI 人工智能自动采集数据
  • 类与对象(中)
  • Cline 3.2 重磅更新:免费调用 Claude Sonnet 3.5 和 GPT 4o,开发效率直接拉满!
  • MYSQL学习笔记(六):聚合函数、sql语句执行原理简要分析
  • 【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程
  • 【LeetCode: 40. 组合总和 II + 递归】
  • 练习题 - Django 4.x Email 邮件使用示例和配置方法
  • 组件中的emit
  • HTML-新浪新闻-实现标题-样式1
  • 80,【4】BUUCTF WEB [SUCTF 2018]MultiSQL
  • 跨平台填录信息,使用办公自动化机器人
  • kotlin内联函数——let,run,apply,also,with的区别
  • 《DeepSeek R1:开源大模型的破局者》
  • Nginx入门学习二
  • 【elasticsearch】reindex 断点续传
  • dm8在Linux环境安装精简步骤说明(2024年12月更新版dm8)
  • 【2024年华为OD机试】 (A卷,100分)- 模拟商场优惠打折(JavaScriptJava PythonC/C++)