Hello. I am trying to use DAC peripheral of stm32f103rbt6. I have used the DAC example of STM32F10x_StdPeriph_Lib_V3.1.2. I have simulated the program using keil debugger. When I step through the program in simulation mode, GPIOA and DAC peripheral clocks are initialized, but when the debugger reaches DAC_Init(DAC_Channel_1, &DAC_InitStructure); command and next commands that read or write to DAC registers, the error : error 65: access violation at 0x40007400 : no 'read' permission or error 65: access violation at 0x40007400 : no 'write' permission is given. It seems that all the DAC registers cannot be read or written, although its clock has been enabled. So please help me with this problem. Thanks in advance.
kind regards.
/* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Init Structure definition */ DAC_InitTypeDef DAC_InitStructure; /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ void RCC_Configuration(void); void GPIO_Configuration(void); /* Private functions ---------------------------------------------------------*/ /** * @brief Main program. * @param None * @retval None */ int main(void) { /* System Clocks Configuration */ RCC_Configuration(); /* Once the DAC channel is enabled, the corresponding GPIO pin is automatically connected to the DAC converter. In order to avoid parasitic consumption, the GPIO pin should be configured in analog */ GPIO_Configuration(); /* DAC channel1 Configuration */ DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_Noise; DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits8_0; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_Init(DAC_Channel_1, &DAC_InitStructure); /* Enable DAC Channel1: Once the DAC channel1 is enabled, PA.04 is automatically connected to the DAC converter. */ DAC_Cmd(DAC_Channel_1, ENABLE); /* Set DAC Channel1 DHR12L register */ DAC_SetChannel1Data(DAC_Align_12b_L, 0x7FF0); while (1) { /* Start DAC Channel1 conversion by software */ DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE); } } /** * @brief Configures the different system clocks. * @param None * @retval None */ void RCC_Configuration(void) { /* Setup the microcontroller system. Initialize the Embedded Flash Interface, initialize the PLL and update the SystemFrequency variable. */ SystemInit(); /* Enable peripheral clocks --------------------------------------------------*/ /* GPIOA Periph clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /* DAC Periph clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); } /** * @brief Configures the different GPIO ports. * @param None * @retval None */ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Once the DAC channel is enabled, the corresponding GPIO pin is automatically connected to the DAC converter. In order to avoid parasitic consumption, the GPIO pin should be configured in analog */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); } /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
Observe that Keil does not provide simulation for the features you want http://www.keil.com/dd/chip/4231.htm
Get some real hardware, and a current version of the Firmware Library (v3.5.0)
Thanks for your reply. I tested the program on the evaluation board I have. Still when I step through the program in debug mode, the DAC clock is not enabled and all DAC registers have zero values. I doubt it could be a problem of the evaluation board. I think I cannot attach the schematic of the evaluation board here. Please help me about this problem.
Kind Regards.