基于STM32的波形发生器Word格式文档下载.docx
- 文档编号:21146306
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:16
- 大小:16.52KB
基于STM32的波形发生器Word格式文档下载.docx
《基于STM32的波形发生器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于STM32的波形发生器Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
0xe6,0xe4,0xe3,0xe1,0xde,0xdc,0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,
0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,
0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,0x23,
0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,0x2,0x1,0x1,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,
0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,
0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c};
uint8_tsq12bit[32]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50};
//方波
uint8_ttrangle[32]={0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,
30,28,26,24,22,20,18,16,14,12,10,8,6,4,2};
//三角波
uint8_txiebo[32]={0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,
34,36,38,40,42,44,46,48,50,52,54,56,58,60,62};
//谐波
uint8_tkey,keyf;
uint8_ti,j;
intmain(void)
{
RCC_Config();
GPIO_Config();
SysTick_Config(72);
//1us
while
(1)
{key=key_scan();
keyf=key_fscan();
switch(key%4)
{
case0:
pcf8591_write(0x40,Sine12bit,256);
break;
case1:
pcf8591_write(0x40,sq12bit,32);
case2:
pcf8591_write(0x40,trangle,32);
case3:
pcf8591_write(0x40,xiebo,32);
default:
}
switch(keyf%5)
if(key%4==0)
{
}
elseif(key%4==1)
pcf8591_write(0x40,sq12bit,32);
elseif(key%4==2)
pcf8591_write(0x40,trangle,32);
elseif(key%4==3)
pcf8591_write(0x40,xiebo,32);
case4:
}
voidDelay_us(__IOuint32_tt)
{
TimingDelay=t;
while(TimingDelay!
=0);
voidTimeDecrement(void)
if(TimingDelay!
=0)
TimingDelay--;
voidRCC_Config(void)
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
voidGPIO_Config(void)
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
//SDASCL
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&
GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_2|GPIO_Pin_3;
//按键
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
//LED
GPIO_Init(GPIOB,&
GPIO_SetBits(GPIOB,GPIO_Pin_5);
voidDelay_d(__IOuint32_tt)
uint32_tT=1000;
while(T--);
while(t--);
voidkey_delay(__IOuint32_tt)
uint32_tT=90000;
uint8_tkey_scan(void)
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==0)//K1波形切换
key_delay(90000);
//18ms
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==0)
while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==0);
i++;
if(i>
20)
i=0;
}
returni;
uint8_tkey_fscan(void)
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)==0)
{//k2频率减小
while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)==0);
j++;
if(j>
10)
j=10;
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_3)==0)
{//k3频率增大
while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_3)==0);
j--;
if(j==0)
j=0;
returnj;
voidDelay(void);
externvoidDelay_us(__IOuint32_tt);
externuint8_tj;
#defineSDA_HGPIOC->
BSRR=GPIO_Pin_0
#defineSDA_LGPIOC->
BRR=GPIO_Pin_0
#defineSCL_HGPIOC->
BSRR=GPIO_Pin_1
#defineSCL_LGPIOC->
BRR=GPIO_Pin_1
#defineSDA_ReadGPIOC->
IDR&
GPIO_Pin_0
boolIIC_Start(void)
SDA_H;
SCL_H;
Delay();
if(!
SDA_Read)
returnfalse;
SDA_L;
if(SDA_Read)
SCL_L;
returntrue;
voidIIC_Stop(void)
boolIIC_WriteByte(uint8_tbyte)
uint8_ti=8;
uint8_tmask=0x80;
while(i--)
if(mask&
byte)
else
mask>
>
=1;
uint8_tIIC_ReadByte_ACK(void)
uint8_tData=0;
Data<
<
Data|=0x01;
returnData;
uint8_tIIC_ReadByte_NACK(void)
uint8_tpcf8591_read(uint8_tcmd)
uint8_tdata=0;
if(IIC_Start()){IIC_Stop();
returnfalse;
if(IIC_WriteByte(0x90)){IIC_Stop();
if(IIC_WriteByte(cmd)){IIC_Stop();
if(IIC_WriteByte(0x91)){IIC_Stop();
data=IIC_ReadByte_NACK();
IIC_Stop();
returndata;
boolpcf8591_write(uint8_tcmd,uint8_t*data,uint32_tlength)
while(length--)
if(IIC_WriteByte(*data)){IIC_Stop();
if(j==0)
Delay_us
(1);
elseif(j==1)
Delay_us(20);
elseif(j==2)
Delay_us(30);
elseif(j==3)
Delay_us(40);
elseif(j==4)
Delay_us(50);
elseif(j==5)
Delay_us(60);
elseif(j==6)
Delay_us(70);
elseif(j==7)
Delay_us(80);
elseif(j==8)
Delay_us(90);
elseif(j==9)
Delay_us(100);
elseif(j==10)
Delay_us(110);
data++;
voidDelay(void)
uint8_ttime=10;
while(time)
time--;
externvoidTimeDecrement(void);
voidSysTick_Handler(void)
TimeDecrement();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 波形 发生器