5058|8

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

更新II:FirmwareLib在EK_STM32F上的学习体会(DMA/EXTI) [复制链接]


接着以前的2个帖子继续更新:

通过Firmware Lib在EK_STM32F上的学习体会

更新:Firmware Lib在EK_STM32F上的学习体会(CAN/Cortex/Debug)

-----------------------DMA分隔线-----------------------------------

DMA exemple 1:

本例展示了如何使用DMA把数据从FLASH传送到RAM。

运行程序,本例使用DMA通道6(DMA Channel6)作为传输管道。把一块大小为32个字(32-word)缓存,从FLASH中转移到位于RAM的目标区去。传输由软件触发。在程序中激活DMA通道6的memory-to-memory功能。一旦传输完成,DMA将产生一个中断。中断程序将读取DMA中待传输数据的数目(等于0)并清除中断旗位。同时程序将比较源数据和目标数据,检查传输是否正确。

DMA exemple 2:

本例展示了如何利用2个DMA通道来实现把一块数据缓存从内存中通过I2C1传送到I2C2。

本例中,I2C1作为主发送端I2C2作为从接受端,DMA通道5用来把在I2C2接收端收到的数据传送到接收缓存I2C2 Rx buffer,而DMA通道6用来把发送缓存I2C1 Tx buffer中的待发送数据传输到I2C1的数据寄存器(DR register)。

传输结束以后,可以通过比较接收缓存I2C2 Rx buffer和发送缓存I2C1 Tx buffer中的数据来判断传输正确与否。在EKSTM32F板上,我们可以通过点亮不同的LED来反映结果,正确的话,LED1(LD5)会亮起,反之则是LED2(LD4)。

另外,在硬件方面,为了运行本例,需要把I2C1 SCL pin (PB.06) 和 I2C2 SCL pin (PB.10)以及I2C1 SDA pin (PB.07)和 I2C2 SDA pin (PB.11)这2组管脚连接起来,并分别加上至少一个上拉电阻,在EKSTM32F板上,我们可以直接利用已经连接好的电阻R27和R28。

DMA exemple 3:

本例展示了如何利用4个DMA通道来实现把内存中4块数据两两通过SPI1和SPI2交换。即SPI1 Tx buffer中的数据由DMA传送至SPI1发送端发送至SPI2,再由DMA从SPI2接收端传送至SPI2 Rx buffer。SPI2 Tx buffer中的数据也由同样的方法传送到SPI1 Rx buffer。

在本例中SPI1工作在主模式(master)而SPI2工作在从模式(slave)。SPI1的NSS管脚由软件配置。DMA通道2用来把SPI1接收到的数据传送进SPI1 Rx buffer;DMA通道4用来把SPI2接收到的数据传送进SPI2 Rx buffer。相应的DMA通道3用来把SPI1 Tx buffer中的待发送数据送进SPI1发送端,DMA通道5用来把SPI2 Tx buffer中的待发送数据送进SPI2发送端。

一旦SPI1_CR2和SPI2_CR2两寄存器中的TxDMAEN 和 RxDMAEN比特被置一,传送就会开始。传送结束以后,程序会比较SPI1 Tx buffer和SPI2 Rx buffer以及SPI2 Tx buffer和SPI1 Rx buffer中的数据。如果传输正确,则在EKSTM32F板上,LED1(LD5)会亮起,反之则是LED2(LD4)。

DMA exemple 4:

本例展示了如何通过DMA来把数据从一个外设(ADC)传送到另一个外设(TIM1)。

在EKSTM32F上,调节分压器VR1可以实现一个可变0-3.3V模拟输入,通过通道10传向ADC。转化结果通过DMA 通道5传向TIM1_CCR1寄存器。而我们把TIM1的通道1(TIM1_CH1)配置为PWM输出。每次TIM1 的update EVENT都会驱动DMA做一次数据传送。

因此,通过调节VR1,我们可以观察到管脚TIM1_CH1 (PA.08)上的PWM输出占空系数(duty cycle)作相应的改变。

-----------------------EXTI分隔线-----------------------------------

EXTI exemple 1

本例展示了如何配置一条外部中断线路。

在本例中,我们把EXTI line 4作为外部中断源,对于线路上的每一个下降沿,都会产生一个中断,在中断中,我们拨动连接在PC.06上的LED的开关。即每按一次按钮KEY3,都会打开或者关闭LD3。

这个例子原本应用于STM32评估板(STM3210B-EVAL),在评估板上按钮与PB.09相连,而在EKSTM32F上,按钮Button13(Key)与PD.04相连,为了本例能在EKSTM32F上运行,我们把原来的线路9(EXTI Line9)改为线路4(EXTI Line4)。

相关打包下载:
相关链接:https://bbs.eeworld.com.cn/upfiles/img/20082/200821413716354.zip
此帖出自stm32/stm8论坛

最新回复

                                 使用exti中断对外部输入脉冲计数,总是多计不知是何原因大家是否遇到这个问题,郁闷中。。。。。。。!!!!   详情 回复 发表于 2009-2-11 17:25
点赞 关注
 

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

请教

在模拟调试时 要产生中断是不是使PD_4口产生个下降沿 就会跳到中断程序?
我调试怎么也产生不了中断 
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

2楼的问题太模糊了

                                 具体怎么回事?是我放上去的EXTI例程运行不正常吗?
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 

谢谢了~~~学习学习...

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 

是这样

你发的EXTI例程里
我在用Keil uVision3的模拟器调试时不知道怎么进入中断 请指教怎么进入中断的
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 

这个...

程序是在EKSTM32F学习板上测试的,
环境是IAR EWARM V4.42A,
Keil的模拟器,没有试过,看来帮不上忙.....
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 

keil下仿真

                                 5楼的可以看看keil帮助里的仿真模板部分
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 

无法下载

                                 郁闷  barboon帮个忙 解决下
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 

exti中断对外部输入脉冲计数,总是多计不知是何原因

使用exti中断对外部输入脉冲计数,总是多计不知是何原因
大家是否遇到这个问题,郁闷中。。。。。。。!!!!
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
立即报名 | 2025 瑞萨电子工业以太网技术日即将开启!
3月-4月 深圳、广州、北京、苏州、西安、上海 走进全国6城
2025瑞萨电子工业以太网技术巡回沙龙聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案。
预报从速,好礼等您拿~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表