STM32的DAC+DMA双通道输出汉字,在示波器中显示汉字
来源:互联网 发布:萌币捏脸数据 编辑:程序博客网 时间:2024/05/22 17:00
1,参照野火的输出正弦波的案例,把DAC进行配置,static void DAC_Config(void){ GPIO_InitTypeDef GPIO_InitStructure;DAC_InitTypeDef DAC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable; DAC_Init(DAC_Channel_1, &DAC_InitStructure); DAC_Init(DAC_Channel_2, &DAC_InitStructure); DAC_Cmd(DAC_Channel_1, ENABLE); DAC_Cmd(DAC_Channel_2, ENABLE); DAC_DMACmd(DAC_Channel_2, ENABLE);}
2.对其 触发时钟进行配置
static void DAC_TIM_Config(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;/* ʹÄÜTIM2ʱÖÓ£¬TIM2CLK Ϊ72M */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* TIM2»ù±¾¶¨Ê±Æ÷ÅäÖà */ TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Period = 250; //¶¨Ê±ÖÜÆÚ 20 TIM_TimeBaseStructure.TIM_Prescaler = 64; //Ô¤·ÖƵ£¬²»·ÖƵ 72M / (0+1) = 72M TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //ʱÖÓ·ÖƵϵÊý TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //ÏòÉϼÆÊýģʽ TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* ÅäÖÃTIM2´¥·¢Ô´ */ TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);/* ʹÄÜTIM2 */ TIM_Cmd(TIM2, ENABLE);}3对DMA进行配置
static void DAC_DMA_Config(void){DMA_InitTypeDef DMA_InitStructure;/* ʹÄÜDMA2ʱÖÓ */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);/* ÅäÖÃDMA2 */ DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address;//ÍâÉèÊý¾ÝµØÖ· DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit ;//ÄÚ´æÊý¾ÝµØÖ· DualSine12bit DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;//Êý¾Ý´«Êä·½ÏòÄÚ´æÖÁÍâÉè DMA_InitStructure.DMA_BufferSize = 290;//»º´æ´óСΪ32×Ö½Ú DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//ÍâÉèÊý¾ÝµØÖ·¹Ì¶¨ DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//ÄÚ´æÊý¾ÝµØÖ·×ÔÔö DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;//ÍâÉèÊý¾ÝÒÔ×ÖΪµ¥Î» DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;//ÄÚ´æÊý¾ÝÒÔ×ÖΪµ¥Î» DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//Ñ»·Ä£Ê½ DMA_InitStructure.DMA_Priority = DMA_Priority_High;//¸ßDMAͨµÀÓÅÏȼ¶ DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//·ÇÄÚ´æÖÁÄÚ´æģʽ DMA_Init(DMA2_Channel4, &DMA_InitStructure); /* ʹÄÜDMA2-14ͨµÀ */ DMA_Cmd(DMA2_Channel4, ENABLE);}
4.汉字的点阵数据取
void DAC_Mode_Init(void){uint16_t xbit[32];//xÖá32λuint16_t ybit[32];//yÖá32λuint8_t temp;uint16_t i=0,j=0,k=0,w=0;DAC_Config();DAC_TIM_Config();DAC_DMA_Config();/*while(1){for(i=0;i<48;i++){for(j=0;j<6;j++){temp=0x80;for(k=0;k<8;k++){if(Sine12bit[6*i+j] & temp){xbit[i]=i*85;//ybit[j*8+k]=(32-(j*8+k))*128;ybit[j*8+k]=(5-j)*680+(8-k)*85;DualSine12bit[w]=(((ybit[j*8+k]))+(xbit[i]<<15));w++;}temp=temp>>1;}}}6显示结果
阅读全文
0 0
- STM32的DAC+DMA双通道输出汉字,在示波器中显示汉字
- stm32 DAC+DMA 输出100K正弦波杠杠的!!!
- stm32之adc双通道的实现dma
- STM32中LCD显示少量汉字
- STM32 双DAC DMA TIM6输出正弦波例子
- 在GD中输出汉字的函数的改进
- 在GD中输出汉字的函数的改进
- 在数组中输出汉字的一点感悟
- 使用stm32在lcd上随意显示汉字
- 在UCGUI中增加汉字显示的说明.
- STM32实现DAC输出的相关设置
- 在C程序中显示汉字
- 在OpenGL中显示TrueType汉字
- 转载:在C程序中显示汉字
- 在C语言中显示汉字
- 在SDL中显示GBK点阵汉字
- 在Ncurses中显示汉字,支持中文
- 在C程序中显示汉字
- mapdb实现分析
- 闲聊软件测试自动化(3): 我们期望什么样的测试自动化?
- maven出现 invalid LOC header (bad signature)的解决办法
- 矩阵快速幂与快速幂模板 整理
- Java的反射机制
- STM32的DAC+DMA双通道输出汉字,在示波器中显示汉字
- POJ 2763 Housewife Wind(树链剖分(边权))
- 激活函数
- 判断是否是微信浏览器
- Linux一些最基本命令
- 方唯上传程序后不能登录后台
- BinaryTree的构建和遍历,以及搜索删除(非完全二叉树,非平衡二叉树)
- Weblogic基本介绍、安装以及myeclipse的配置
- 闲聊软件测试自动化(4):我们怎样实现期望的测试自动化?