⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sound.c

📁 专业汽车级嵌入式操作系统OSEK的源代码
💻 C
字号:
#include "mytypes.h"#include "sound.h"#include "AT91SAM7.h"#include "aic.h"extern void sound_isr_entry(void);const U32 tone_pattern[16] =   {    0xF0F0F0F0,0xF0F0F0F0,    0xFCFCFCFC,0xFCFCFDFD,    0xFFFFFFFF,0xFFFFFFFF,    0xFDFDFCFC,0xFCFCFCFC,    0xF0F0F0F0,0xF0F0F0F0,    0xC0C0C0C0,0xC0C08080,    0x00000000,0x00000000,    0x8080C0C0,0xC0C0C0C0  };  U32 tone_cycles;void sound_init(){  sound_interrupt_disable();  sound_disable();    *AT91C_PMC_PCER = (1 << AT91C_PERIPHERAL_ID_SSC);  //*AT91C_PIOA_ODR = AT91C_PA17_TD;  //*AT91C_PIOA_OWDR = AT91C_PA17_TD;  //*AT91C_PIOA_MDDR = AT91C_PA17_TD;  //*AT91C_PIOA_PPUDR = AT91C_PA17_TD;  //*AT91C_PIOA_IFDR = AT91C_PA17_TD;  //*AT91C_PIOA_CODR = AT91C_PA17_TD;    *AT91C_SSC_CR = AT91C_SSC_SWRST;  *AT91C_SSC_TCMR = AT91C_SSC_CKS_DIV + AT91C_SSC_CKO_CONTINOUS + AT91C_SSC_START_CONTINOUS;  *AT91C_SSC_TFMR = 31 + (7 << 8) + AT91C_SSC_MSBF; // 8 32-bit words  *AT91C_SSC_CR = AT91C_SSC_TXEN;                                          aic_mask_on(AT91C_PERIPHERAL_ID_SSC);  aic_clear(AT91C_PERIPHERAL_ID_SSC);  aic_set_vector(AT91C_PERIPHERAL_ID_SSC, AT91C_AIC_PRIOR_LOWEST | AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED,		 sound_isr_entry);}void sound_freq(U32 freq, U32 ms){  *AT91C_SSC_CMR = ((96109714 / 1024) / freq) + 1;  *AT91C_SSC_PTCR = AT91C_PDC_TXTEN;  tone_cycles = (freq * ms) / 2000 - 1;  sound_interrupt_enable();}void sound_interrupt_enable(){  *AT91C_SSC_IER = AT91C_SSC_ENDTX;}void sound_interrupt_disable(){  *AT91C_SSC_IDR = AT91C_SSC_ENDTX;}void sound_enable(){  *AT91C_PIOA_PDR = AT91C_PA17_TD;}void sound_disable(){  *AT91C_PIOA_PER = AT91C_PA17_TD;}void sound_isr_C(){  if (tone_cycles--)  {    *AT91C_SSC_TNPR = (unsigned int) tone_pattern;    *AT91C_SSC_TNCR = 16;    sound_enable();  }  else  {  	sound_disable();  	sound_interrupt_disable();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -