т.е имеется массив значений для генерации синуса:
Код
const uint16_t sin_50hz[] =
{ 2048, 2112, 2177, 2241, 2305, 2368, 2432, 2495, 2557, 2619, 2681, 2742, 2802,
2861, 2920, 2978, 3035, 3091, 3145, 3199, 3252, 3303, 3353, 3402, 3450,
3496, 3541, 3584, 3626, 3666, 3705, 3742, 3777, 3811, 3843, 3873, 3901,
3928, 3952, 3975, 3996, 4015, 4032, 4047, 4060, 4071, 4080, 4087, 4092,
4095, 4095, 4095, 4092, 4087, 4080, 4071, 4060, 4047, 4032, 4015, 3996,
3975, 3952, 3928, 3901, 3873, 3843, 3811, 3777, 3742, 3705, 3666, 3626,
3584, 3541, 3496, 3450, 3402, 3353, 3303, 3252, 3199, 3145, 3091, 3035,
2978, 2920, 2861, 2802, 2742, 2681, 2619, 2557, 2495, 2432, 2368, 2305,
2241, 2177, 2112, 2048, 1984, 1919, 1855, 1791, 1728, 1664, 1601, 1539,
1477, 1415, 1354, 1294, 1235, 1176, 1118, 1061, 1005, 951, 897, 844,
793, 743, 694, 646, 600, 555, 512, 470, 430, 391, 354, 319, 285, 253,
223, 195, 168, 144, 121, 100, 81, 64, 49, 36, 25, 16, 9, 4, 1, 0, 1, 4,
9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 168, 195, 223, 253, 285, 319,
354, 391, 430, 470, 512, 555, 600, 646, 694, 743, 793, 844, 897, 951,
1005, 1061, 1118, 1176, 1235, 1294, 1354, 1415, 1477, 1539, 1601, 1664,
1728, 1791, 1855, 1919, 1984 };
{ 2048, 2112, 2177, 2241, 2305, 2368, 2432, 2495, 2557, 2619, 2681, 2742, 2802,
2861, 2920, 2978, 3035, 3091, 3145, 3199, 3252, 3303, 3353, 3402, 3450,
3496, 3541, 3584, 3626, 3666, 3705, 3742, 3777, 3811, 3843, 3873, 3901,
3928, 3952, 3975, 3996, 4015, 4032, 4047, 4060, 4071, 4080, 4087, 4092,
4095, 4095, 4095, 4092, 4087, 4080, 4071, 4060, 4047, 4032, 4015, 3996,
3975, 3952, 3928, 3901, 3873, 3843, 3811, 3777, 3742, 3705, 3666, 3626,
3584, 3541, 3496, 3450, 3402, 3353, 3303, 3252, 3199, 3145, 3091, 3035,
2978, 2920, 2861, 2802, 2742, 2681, 2619, 2557, 2495, 2432, 2368, 2305,
2241, 2177, 2112, 2048, 1984, 1919, 1855, 1791, 1728, 1664, 1601, 1539,
1477, 1415, 1354, 1294, 1235, 1176, 1118, 1061, 1005, 951, 897, 844,
793, 743, 694, 646, 600, 555, 512, 470, 430, 391, 354, 319, 285, 253,
223, 195, 168, 144, 121, 100, 81, 64, 49, 36, 25, 16, 9, 4, 1, 0, 1, 4,
9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 168, 195, 223, 253, 285, 319,
354, 391, 430, 470, 512, 555, 600, 646, 694, 743, 793, 844, 897, 951,
1005, 1061, 1118, 1176, 1235, 1294, 1354, 1415, 1477, 1539, 1601, 1664,
1728, 1791, 1855, 1919, 1984 };
с помощью DMA я передаю ЦАПу все значения по прерыванию таймера!!!!!
Код
//***********DMA1***************
RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN;
DMA1_Stream5->CR|= DMA_SxCR_CHSEL; // 111: channel 7 selected
DMA1_Stream5->PAR= (uint32_t)&DAC->DHR12R1; // указатель на переферийное устройство
DMA1_Stream5->M0AR=(uint32_t)&sin_50hz[0];//адрес буфера
DMA1_Stream5->NDTR=200; // кол-во передаваемых данных
DMA1_Stream5->CR|= DMA_SxCR_MINC; // инкремент указателя буфера
DMA1_Stream5->CR|= DMA_SxCR_MSIZE_0; // размер элемента в памяти 16 бит
DMA1_Stream5->CR|= DMA_SxCR_PSIZE_0; // размер элемента в переферии 16 бит
DMA1_Stream5->CR|= DMA_SxCR_CIRC; // цикличная передача данных
DMA1_Stream5->CR|= DMA_SxCR_DIR_0; // 01: Memory-to-peripheral
DMA1_Stream5->CR|= DMA_SxCR_PL; // 11: Very high
DMA1_Stream5->CR|= DMA_SxCR_EN; // включение ПДП
RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN;
DMA1_Stream5->CR|= DMA_SxCR_CHSEL; // 111: channel 7 selected
DMA1_Stream5->PAR= (uint32_t)&DAC->DHR12R1; // указатель на переферийное устройство
DMA1_Stream5->M0AR=(uint32_t)&sin_50hz[0];//адрес буфера
DMA1_Stream5->NDTR=200; // кол-во передаваемых данных
DMA1_Stream5->CR|= DMA_SxCR_MINC; // инкремент указателя буфера
DMA1_Stream5->CR|= DMA_SxCR_MSIZE_0; // размер элемента в памяти 16 бит
DMA1_Stream5->CR|= DMA_SxCR_PSIZE_0; // размер элемента в переферии 16 бит
DMA1_Stream5->CR|= DMA_SxCR_CIRC; // цикличная передача данных
DMA1_Stream5->CR|= DMA_SxCR_DIR_0; // 01: Memory-to-peripheral
DMA1_Stream5->CR|= DMA_SxCR_PL; // 11: Very high
DMA1_Stream5->CR|= DMA_SxCR_EN; // включение ПДП
так вот,повторюсь) как в процессе передачи данных добавить делитель!!!!!!!!!!! к примеру по нажатию кнопки урезать(увеличить) размах!!!!!!т.е сделать что-то типа этого: DMA1_Stream5->M0AR=((uint32_t)&sin_50hz[0])/2-делить каждый элемент буферана опр знач!