@@ -37,52 +37,74 @@ struct stm32_dac
3737
3838static struct stm32_dac stm32_dac_obj [sizeof (dac_config ) / sizeof (dac_config [0 ])];
3939
40+ static rt_uint32_t stm32_dac_get_channel (rt_uint32_t channel )
41+ {
42+ rt_uint32_t stm32_channel = 0 ;
43+
44+ switch (channel )
45+ {
46+ case 1 :
47+ stm32_channel = DAC_CHANNEL_1 ;
48+ break ;
49+ case 2 :
50+ stm32_channel = DAC_CHANNEL_2 ;
51+ break ;
52+ default :
53+ RT_ASSERT (0 );
54+ break ;
55+ }
56+
57+ return stm32_channel ;
58+ }
59+
4060static rt_err_t stm32_dac_enabled (struct rt_dac_device * device , rt_uint32_t channel )
4161{
62+ uint32_t dac_channel ;
4263 DAC_HandleTypeDef * stm32_dac_handler ;
4364 RT_ASSERT (device != RT_NULL );
4465 stm32_dac_handler = device -> parent .user_data ;
4566
4667#if defined(SOC_SERIES_STM32MP1 ) || defined(SOC_SERIES_STM32H7 ) || defined(SOC_SERIES_STM32L4 ) || defined(SOC_SERIES_STM32F4 )
47- HAL_DAC_Start (stm32_dac_handler , channel );
68+ if ((channel <= 2 ) && (channel > 0 ))
69+ {
70+ /* set stm32 dac channel */
71+ dac_channel = stm32_dac_get_channel (channel );
72+ }
73+ else
74+ {
75+ LOG_E ("dac channel must be 1 or 2." );
76+ return - RT_ERROR ;
77+ }
78+ HAL_DAC_Start (stm32_dac_handler , dac_channel );
4879#endif
4980
5081 return RT_EOK ;
5182}
5283
5384static rt_err_t stm32_dac_disabled (struct rt_dac_device * device , rt_uint32_t channel )
5485{
86+ uint32_t dac_channel ;
5587 DAC_HandleTypeDef * stm32_dac_handler ;
5688 RT_ASSERT (device != RT_NULL );
5789 stm32_dac_handler = device -> parent .user_data ;
5890
5991#if defined(SOC_SERIES_STM32MP1 ) || defined(SOC_SERIES_STM32H7 ) || defined(SOC_SERIES_STM32L4 ) || defined(SOC_SERIES_STM32F4 )
60- HAL_DAC_Stop (stm32_dac_handler , channel );
92+ if ((channel <= 2 ) && (channel > 0 ))
93+ {
94+ /* set stm32 dac channel */
95+ dac_channel = stm32_dac_get_channel (channel );
96+ }
97+ else
98+ {
99+ LOG_E ("dac channel must be 1 or 2." );
100+ return - RT_ERROR ;
101+ }
102+ HAL_DAC_Stop (stm32_dac_handler , dac_channel );
61103#endif
62104
63105 return RT_EOK ;
64106}
65107
66- static rt_uint32_t stm32_dac_get_channel (rt_uint32_t channel )
67- {
68- rt_uint32_t stm32_channel = 0 ;
69-
70- switch (channel )
71- {
72- case 1 :
73- stm32_channel = DAC_CHANNEL_1 ;
74- break ;
75- case 2 :
76- stm32_channel = DAC_CHANNEL_2 ;
77- break ;
78- default :
79- RT_ASSERT (0 );
80- break ;
81- }
82-
83- return stm32_channel ;
84- }
85-
86108static rt_err_t stm32_set_dac_value (struct rt_dac_device * device , rt_uint32_t channel , rt_uint32_t * value )
87109{
88110 uint32_t dac_channel ;
0 commit comments