重学STM32---(六)DAC+DMA+TIM
这两天复习了DAC,DMA再加上把基本定时器TIM6和TIM7看了一下,打算写一个综合点的程序,,,就在网上找了一些关于DAC,DMA和定时器相关的程序,最终打算写了输出正弦波的程序。。。
由于没有示波器,也就不能显示出效果了,本来是打算用软件调试看效果的,但TIM6总是出问题,CNT不自增,可是我真的找不出TIM6有什么错误,,,后来在网上发现许多道友遇到同样的问题,有人说TIM6不支持软件调试,不知道是不是这么回事,,没办法,没示波器,软件调试又不行,自己本身也不想耽搁复习的进程,也就不纠结于此了
整体上应该是对的
程序:
#include "dac.h"
#include "stm32f10x.h"
void DAC1_Init()
{
RCC->APB2ENR |= 1 << 2; //
GPIOA->CRL &= 0xfff0ffff; //PA4模拟输入
DAC->CR &= 0x00000000; //清零
DAC->CR |= 1 << 12; //DMA使能
DAC->CR |= 0 << 6; //TIM6 TRGO触发
DAC->CR |= 1 << 2; //开启触发使能
DAC->CR |= 1 << 1; //关闭输出缓存
DAC->CR |= 1 << 0; //开启DAC1
}
#include "dma.h"
#include "stm32f10x.h"
//pscadr 外设地址
//memaddr存储器地址
//numbyte传输字节数
void DMA_Init(u32 pscadr,u16 memaddr,u16 numbyte)
{
RCC->AHBENR |= 1 << 0; //开启DMA1的时钟
DMA1_Channel1->CCR &= 0xFFFF0000;
DMA1_Channel1->CCR |= 3 << 12; //优先级最高
DMA1_Channel1->CCR |= 1 << 10; //存储器16位数据
DMA1_Channel1->CCR |= 1 << 8; //外设16位数据
DMA1_Channel1->CCR |= 1 << 7; //存储器自增
DMA1_Channel1->CCR |= 0 << 6; //外设不自增
DMA1_Channel1->CCR |= 1 << 5; //循环
DMA1_Channel1->CCR |= 1 << 4; //从存储器读
DMA1_Channel1->CNDTR |= numbyte ;
DMA1_Channel1->CMAR |= memaddr ;
DMA1_Channel1->CPAR |= pscadr ;
DMA1_Channel1->CCR |= 1 << 0; //通道开启
}
void TIM6_Init(u16 arr,u16 psc)
{
RCC->APB1ENR |= 1 << 4;
TIM6->CR1 &= 0xFF00;
TIM1->CR1 |= 1 << 7; //自动重装载
TIM6->CR1 |= 0 << 3; //非单脉冲模式
TIM6->CR2 |= 2 << 3; //更新事件用作TRGO
TIM6->PSC |= psc;
TIM6->ARR |= arr;
TIM6->CR1 |= 1 << 0;
}
#include "timer.h"
//#include "exti.h"
#include "dma.h"
#include "dac.h"
/* 波形数据 ---------------------------------------------------------*/
const unsigned short Sine12bit[32] = {
2448,2832,3186,3496,3751,3940,4057,4095,4057,3940,
3751,3496,3186,2832,2448,2048,1648,1264,910,600,345,
156,39,0,39,156,345,600,910,1264,1648,2048};
#define DAC_DHR12R1_ADDR DAC_BASE + 8 //DAC_DHR12R1寄存器地址
int main()
{
LED_Init ();
delay_init (72);
TIM6_Init(19,0);
DAC1_Init();
DMA_Init(DAC_DHR12R1_ADDR,(unsigned short)Sine12bit,32);
while(1);
}
重学STM32---(六)DAC+DMA+TIM的更多相关文章
- STM32 F4 DAC DMA Waveform Generator
STM32 F4 DAC DMA Waveform Generator Goal: generating an arbitrary periodic waveform using a DAC with ...
- STM32之DAC君
如花说得好:呃呃呃.是俗话说得好:有了ADC,怎可少了DAC..我觉得奇怪.今天我开头就直奔主题了.我想了想,总结了一句话:孙悟空纵然有七十二变.无论是变成猫也好,变成狗也罢.始终还是会变回他本身.所 ...
- 重学前端 --- Promise里的代码为什么比setTimeout先执行?
首先通过一段代码进入讨论的主题 var r = new Promise(function(resolve, reject){ console.log("a"); resolve() ...
- STM32之串口DMA接收不定长数据
STM32之串口DMA接收不定长数据 引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口 ...
- 重学 Java 设计模式:实战抽象工厂模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!
- 重学 Java 设计模式:实战单例模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 5个创建型模式的最后一个 在设计模式中按照不同的处理方式共包含三大类:创建型模式.结 ...
- 重学 Java 设计模式:实战适配器模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 擦屁屁纸80%的面积都是保护手的! 工作到3年左右很大一部分程序员都想提升自己的技术 ...
- 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)
作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么你的代码那么多ifelse 同类的业务.同样的功能, ...
- 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...
随机推荐
- 支持向量机的smo算法(MATLAB code)
建立smo.m % function [alpha,bias] = smo(X, y, C, tol) function model = smo(X, y, C, tol) % SMO: SMO al ...
- 读《程序员的SQL金典》[1]--基础数据检索
前言 <程序员的SQL金典>这本书是杨中科老师的,拜读了一下,简单做了读书笔记供以后翻阅.仅供学习分享,要想细读的话推荐购买原版呀! 这次读书的时候用了新的办法把看书计划进行了量化,虽然简 ...
- vim 代码
vim函数跳转 时间:2014-05-07 14:02:12 阅读:40 ...
- linux shell 单引号 双引号 反引号的区别
一.单引号和双引号 首先, 单引号和双引号,都是为了解决中间有空格的问题. 因为空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行就会报错.为 ...
- 亿级Web系统搭建——单机到分布式集群[转]
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- Understanding Virtual Memory
Understanding Virtual Memory by Norm Murray and Neil Horman Introduction Definitions The Life of a P ...
- IoTimerInLineHook
#ifndef CXX_IOTIMERINLINEHOOK_H # include "IoTimerInlineHook.h" #endif ULONG32 SSDT_NtOpen ...
- 转: CSS中overflow的用法
Overflow可以实现隐藏超出对象内容,同时也有显示与隐藏滚动条的作用,overflow属性有四个值:visible (默认), hidden, scroll, 和auto.同样有两个overflo ...
- PHP IMAP收QQ邮件,SMTP存入另外QQ邮箱
作用,将qq1收到邮件,用qq2的账号.以qq0的为发件人身份放到qq2的邮箱. 什么样做这样一个功能,一个朋友要求的,她不告诉我为什么,好吧 <?php define('USER','xxx@ ...
- USB鼠标按键驱动
现象:把USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能 ...