STM8L151K4 内部16M时钟,PB4做为DA输出, PB6做为初始化成功指示。 PB4如果用做普通IO控制LED闪烁也是OK的。作为DA就没输出。 研究了很久,就是不知道哪里错了,恳请高手指点。谢谢 /* MAIN.C file * * Copyright (c) 2002-2005 STMicroelectronics */ #include "stm8l15x.h" #include "stm8l15x_gpio.h" #include "stm8l15x_i2c.h" #include "stm8l15x_dac.h" #include "stm8l15x_clk.h" #include "stm8l15x_syscfg.h" #define POWER_LED_ON (GPIO_SetBits(GPIOB,GPIO_Pin_6)) //设置电源指示灯 void GPIO_CONF(void) //IO口初始化 { GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_Out_PP_High_Fast);//PB6 LED ON //GPIO_Init(GPIOB,GPIO_Pin_4,GPIO_Mode_In_FL_IT); } void CLK_CONF(void) //系统频率初始化 { CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//系统时钟分频 CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);//打开DAC时钟 } void DAC_CONF(void) //初始化DAC { DAC_DeInit();//DAC初始化到默认值 DAC_Init( DAC_Channel_1, //DAC通道1 DAC_Trigger_Software, //DAC 触发 DAC_OutputBuffer_Disable);//DAC输出缓冲 DAC_WaveGenerationCmd(DAC_Channel_1,DAC_Wave_Triangle,DISABLE);//不使用三角波 IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(DAC_LFSRUnmask_Bits11_0); //DAC位数 DAC_DMACmd(DAC_Channel_1, DISABLE);//DAC DMA 关闭 DAC_Cmd(DAC_Channel_1, ENABLE);//DAC1通道打开 DAC_SetChannel1Data(DAC_Align_12b_R, 0X7FF);//刷新数据 DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);//DAC软件 触发 } main() { CLK_CONF(); GPIO_CONF(); DAC_CONF(); POWER_LED_ON;//开电源指示灯 while (1) { }; } |
从零开始操作STM8寄存器(风驰iCreate奉献)
【中文资料】初学STM8库函数的中文帮助软件
绝对经典的中文STM8学习手册,淘宝上学习板资料,友情大放送!
【原创教程】风驰iCreate独家开源STM8 27个例程和10多万字的pdf教程
STM8的LCD1602 4线驱动,为什么不工作
【精华资料】由零开始开发STM8
STM8S 的触摸库是如何在主程序中查询键的呢、
【精华资料】STM8的C语言编程1-14讲完整版
【精品教程】STM8系列单片机入门教程系列
STM8 第一次进中断不准【悬赏问答】
RE:STM8L151K4的DA输出无变化
RE:STM8L151K4的DA输出无变化
这句应该是打开的吧,还有其他地方要开么?
RE:STM8L151K4的DA输出无变化
RE:STM8L151K4的DA输出无变化
对了这个是32PIN封装的芯片。
RE:STM8L151K4的DA输出无变化
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include "stm8l15x.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x_i2c.h"
#include "stm8l15x_dac.h"
#include "stm8l15x_clk.h"
#include "stm8l15x_syscfg.h"
#define POWER_LED_ON (GPIO_SetBits(GPIOB,GPIO_Pin_7)) //设置电源指示灯
void GPIO_CONF(void) //IO口初始化
{
GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_High_Fast); //PB7 LED ON
}
void CLK_CONF(void) //系统频率初始化
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //系统时钟分频
CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE); //打开DAC时钟
CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE); //打开比较器时钟
}
void DAC_CONF(void) //初始化DAC
{
SYSCFG_RIIOSwitchConfig (RI_IOSwitch_15, ENABLE); //打开PB4 DA
DAC_DeInit(); //DAC初始化到默认值
DAC_Init( DAC_Channel_1,DAC_Trigger_None,DAC_OutputBuffer_Enable);//通道 触发 缓冲
DAC_Cmd (DAC_Channel_1,ENABLE); //使用通道1
DAC_SetChannel1Data(DAC_Align_12b_R,0x0FFF); //刷新数据
}
main()
{
CLK_CONF();//初始化时钟
GPIO_CONF();//初始化GPIO
POWER_LED_ON;//开电源指示灯
DAC_CONF();//DAC
while (1)
{
};
}
回复:STM8L151K4的DA输出无变化
RE:STM8L151K4的DA输出无变化
回复:STM8L151K4的DA输出无变化
回复:STM8L151K4的DA输出无变化
已经解决,给新手参考。COMP时钟要打开。如果您觉得对您有帮助,那么就顶一下罗,谢谢
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include "stm8l15x.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x_i2c.h"
#include "stm8l15x_dac.h"
#include "stm8l15x_clk.h"
#include "stm8l15x_syscfg.h"
#define POWER_LED_ON (GPIO_SetBits(GPIOB,GPIO_Pin_7)) //设置电源指示灯
void GPIO_CONF(void) //IO口初始化
{
GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_High_Fast); //PB7 LED ON
}
void CLK_CONF(void) //系统频率初始化
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //系统时钟分频
CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE); //打开DAC时钟
CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE); //打开比较器时钟
}
void DAC_CONF(void) //初始化DAC
{
SYSCFG_RIIOSwitchConfig (RI_IOSwitch_15, ENABLE); //打开PB4 DA
DAC_DeInit(); //DAC初始化到默认值
DAC_Init( DAC_Channel_1,DAC_Trigger_None,DAC_OutputBuffer_Enable);//通道 触发 缓冲
DAC_Cmd (DAC_Channel_1,ENABLE); //使用通道1
DAC_SetChannel1Data(DAC_Align_12b_R,0x0FFF); //刷新数据
}
main()
{
CLK_CONF();//初始化时钟
GPIO_CONF();//初始化GPIO
POWER_LED_ON;//开电源指示灯
DAC_CONF();//DAC
while (1)
{
};
}
COMP时钟要打开? 为何?
回复:STM8L151K4的DA输出无变化
应该是说任何对RI的操作都必须先开启COMP时钟吧。