2481| 6
|
[技术讨论] stm32f4正弦波频率和幅值可调(范围0-50KHz) |
[/free][hide=2,money]主函数代码,采集数据进行转换
int main(void) { uart_init(115200); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//???????????2 sin_Generation(); GPIO_Configuration(); LED_Init(); //???LED?? TIM3_Int_Init(1,84-1); //1us DAC_SetChannel1Data(DAC_Align_12b_R, 0);//初始值为0 while(1) { if(USART_RX_STA&0x8000) { AIG=USART_RX_BUF[0]*256+USART_RX_BUF[1]; VAL=USART_RX_BUF[2]*256+USART_RX_BUF[3]; bb=(AIG/500000.0)*360.0; sin_Generation(); USART_RX_STA=0; } } } //定时器函数内的中断代码 主要进行相位角的分割,将电压信号分成一定度数,数值可调 void TIM3_IRQHandler(void) { if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //???? { cc=bb+cc; if((cc>360)||(cc==360)) cc=cc-360; aa=cc; //Dac1_Set_Vol(sinTable[aa]); DAC_SetChannel1Data(DAC_Align_12b_R,vall[aa]); } TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //??????? } //电压部分的分割 进行度数对应电压的数组列表 void sin_Generation(void) { u16 n; float temp; for(n=0;n<360;n++) { temp=(sin(2*PI*n/360)+1)*VAL; temp/=1000; vall[n] = temp*4096/3.3; } } [/hide][free]
购买主题
本主题需向作者支付 2 枚金币 才能浏览
《《《 点击这里展开全文 》》》 | |
发表于 2018-1-25 17:21:29
|
显示全部楼层
| |
发表于 2018-1-25 20:33:30
|
显示全部楼层
| |
发表于 2018-1-26 14:41:09
|
显示全部楼层
| |
发表于 2018-1-27 09:33:27
|
显示全部楼层
| |
发表于 2020-4-13 08:53:23
|
显示全部楼层
| |
发表于 2020-4-14 18:38:08
|
显示全部楼层
| |