****************************************** ********** TIME BASED INTERRUPT ********** ****************************************** % Starting timer inside void main HAL_TIM_Base_Start_IT(&htimx); % Callback function void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if (htim->Instance==TIMx){ } if (htim->Instance==TIMy){ } if (htim->Instance==TIMz){ } } ************************************************** ********** Pulse Width Modulation (PWM) ********** ************************************************** % Starting timer inside void main HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_y); % Setting duty cycle __HAL_TIM_SET_COMPARE(&htimx,TIM_CHANNEL_y,duty_cycle); % Set duty cycle ********************************************** ********** Multiple channel ADC DMA ********** ********************************************** % Declaring private variable uint32_t adc_buffer[n]; uint32_t adc_getValue_1, adc_getValue_2, ... , adc_getValue_n; float readValue_1, readValue_2, ... , readValue_n; % Starting ADC inside void main (multiple channel) HAL_ADC_Start_DMA(&hadcx, (uint32_t *)adc_buffer, n); % Callback function void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){ if(hadc->Instance == ADCx){ adc_getValue_1 = adc_buffer[0]; adc_getValue_2 = adc_buffer[1]; ... adc_getValue_n = adc_buffer[n-1]; } } ************************* ********** DAC ********** ************************* % Declaring private variables uint32_t data_m, data_n; % Range 0 - 4095 (in case of 12 bits alignment) % Starting DACs inside void main HAL_DAC_Start(&hdacx, DAC_CHANNEL_m); HAL_DAC_Start(&hdacx, DAC_CHANNEL_n); % Setting DACs values for 12 bits right alignment HAL_DAC_SetValue(&hdacx, DAC_CHANNEL_m, DAC_ALIGN_12B_R,data_m); HAL_DAC_SetValue(&hdacx, DAC_CHANNEL_n, DAC_ALIGN_12B_R,data_n); *********************************************** ********** Useful HAL GPIO functions ********** *********************************************** HAL_GPIO_ReadPin(GPIOX, GPIO_PIN_y); HAL_GPIO_WritePin(GPIOX,GPIO_PIN_y,GPIO_PIN_SET); % or HAL_GPIO_WritePin(GPIOX,GPIO_PIN_y,GPIO_PIN_RESET); HAL_GPIO_TogglePin(GPIOx, GPIO_PIN_y); *********************************************** ********** 200 points sinewaves LUTs ********** *********************************************** float va[200] = {2012.5,2067.8554,2123.1554,2178.3447,2233.368,2288.1702,2342.6966,2396.8925,2450.7036,2504.0763,2556.9569,2609.2926,2661.0311,2712.1205,2762.5097,2812.1483,2860.9866,2908.9758,2956.0677,3002.2153,3047.3723,3091.4937,3134.5352,3176.4537,3217.2073,3256.7553,3295.058,3332.0771,3367.7755,3402.1175,3435.0689,3466.5964,3496.6687,3525.2557,3552.3286,3577.8605,3601.8257,3624.2003,3644.9619,3664.0898,3681.5647,3697.3691,3711.4873,3723.9052,3734.6103,3743.5918,3750.8409,3756.3502,3760.1142,3762.1292,3762.3931,3760.9058,3757.6686,3752.6848,3745.9594,3737.4992,3727.3125,3715.4097,3701.8025,3686.5047,3669.5315,3650.8999,3630.6286,3608.7379,3585.2496,3560.1873,3533.576,3505.4425,3475.8148,3444.7225,3412.1969,3378.2705,3342.9772,3306.3523,3268.4325,3229.2558,3188.8613,3147.2895,3104.5819,3060.7815,3015.9318,2970.078,2923.2658,2875.542,2826.9546,2777.552,2727.3837,2676.5,2624.9517,2572.7905,2520.0686,2466.8386,2413.154,2359.0683,2304.6359,2249.911,2194.9486,2139.8035,2084.531,2029.1865,1973.8252,1918.5027,1863.2742,1808.1951,1753.3205,1698.7052,1644.404,1590.4712,1536.9607,1483.9262,1431.4207,1379.4967,1328.2063,1277.6007,1227.7306,1178.6459,1130.3957,1083.0284,1036.5913,991.1309,946.6927,903.3211,861.0597,819.9506,780.035,741.3529,703.943,667.8427,633.0882,599.7142,567.7541,537.2399,508.2022,480.67,454.6709,430.2309,407.3745,386.1245,366.5021,348.5271,332.2175,317.5895,304.6577,293.4352,283.9332,276.1611,270.1268,265.8363,263.2938,262.502,263.4616,266.1717,270.6295,276.8306,284.7688,294.4361,305.8228,318.9177,333.7075,350.1774,368.3111,388.0902,409.4951,432.5043,457.0947,483.2419,510.9195,540.1,570.754,602.8509,636.3587,671.2437,707.4711,745.0045,783.8065,823.8381,865.0594,907.4291,950.9047,995.4428,1040.9988,1087.527,1134.981,1183.3133,1232.4753,1282.4181,1333.0915,1384.4449,1436.4268,1488.9853,1542.0677,1595.6209,1649.5914,1703.9251,1758.5675,1813.4642,1868.56,1923.7999,1979.1285,2034.4906}; float vb[200] = {496.9555,470.0362,444.6606,420.8541,398.6406,378.0422,359.0796,341.7718,326.136,312.188,299.9417,289.4094,280.6015,273.5269,268.1927,264.6043,262.7651,262.6772,264.3404,267.7533,272.9123,279.8123,288.4464,298.8059,310.8806,324.6582,340.1251,357.2657,376.0629,396.4978,418.5501,442.1976,467.4167,494.1821,522.4671,552.2433,583.4809,616.1488,650.2141,685.6428,722.3995,760.4473,799.7481,840.2628,881.9506,924.7698,968.6777,1013.6303,1059.5825,1106.4884,1154.3011,1202.9727,1252.4544,1302.6969,1353.6497,1405.2618,1457.4818,1510.2572,1563.5352,1617.2626,1671.3855,1725.8498,1780.601,1835.5843,1890.7446,1946.0268,2001.3756,2056.7354,2112.051,2167.267,2222.3281,2277.1791,2331.7653,2386.032,2439.9248,2493.3898,2546.3736,2598.823,2650.6857,2701.9096,2752.4436,2802.237,2851.2401,2899.4037,2946.6797,2993.0208,3038.3806,3082.7136,3125.9756,3168.1231,3209.1142,3248.9076,3287.4636,3324.7436,3360.7103,3395.3277,3428.5612,3460.3774,3490.7446,3519.6323,3547.0117,3572.8553,3597.1373,3619.8334,3640.9208,3660.3785,3678.187,3694.3284,3708.7866,3721.5472,3732.5973,3741.926,3749.5238,3755.3831,3759.4982,3761.8649,3762.4807,3761.3452,3758.4594,3753.8262,3747.4503,3739.338,3729.4975,3717.9385,3704.6728,3689.7135,3673.0756,3654.7759,3634.8325,3613.2654,3590.0963,3565.3483,3539.0462,3511.2163,3481.8864,3451.086,3418.8459,3385.1982,3350.1768,3313.8165,3276.1539,3237.2266,3197.0736,3155.7351,3113.2524,3069.668,3025.0256,2979.3699,2932.7465,2885.2021,2836.7843,2787.5416,2737.5232,2686.7791,2635.3603,2583.3181,2530.7045,2477.5724,2423.9748,2369.9654,2315.5983,2260.9278,2206.0087,2150.8959,2095.6446,2040.3101,1984.9477,1929.613,1874.3612,1819.2476,1764.3274,1709.6557,1655.287,1601.2758,1547.6762,1494.5417,1441.9257,1389.8807,1338.4588,1287.7115,1237.6896,1188.4431,1140.0214,1092.4728,1045.845,1000.1847,955.5375,911.9481,869.4602,828.1162,787.9576,749.0245,711.3559,674.9895,639.9617,606.3076,574.0608,543.2536,513.9169,486.0799};