-
int main(void)
{
#ifdef DEBUG
debug();
#endif
/* System clocks configuration ---------------------------------------------*/
RCC_Configuration();
/* NVIC configuration ------------------------------------------------------*/
NVIC_Configuration();
/* GPIO configuration ------------------------------------------------------*/
GPIO_Configuration();
/* Configure the USART1 */
// USART_Configuration1();
// printf("\r\n USART1 print AD_value -------------------------- \r\n");
/* TIM8 Configuration */
/* Time base configuration */
// TIM_DeInit(TIM6);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 0x19;
TIM_TimeBaseStructure.TIM_Prescaler = 0x0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);
/* TIM8 TRGO selection */
TIM_SelectOutputTrigger(TIM6, TIM_TRGOSource_Update);
/* DAC channel1 Configuration */
DAC_StructInit(&DAC_InitStructure);
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
/* DAC channel2 Configuration */
DAC_Init(DAC_Channel_2, &DAC_InitStructure);
/* Fill Sine32bit table */
for (Idx= 0; Idx<32; Idx++)
{
DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
}
/* DMA2 channel3 configuration */
DMA_DeInit(DMA2_Channel3);
DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address;
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&DualSine12bit;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize = 32;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA2_Channel3, &DMA_InitStructure);
/* Enable DMA2 Channel3 */
DMA_Cmd(DMA2_Channel3, ENABLE);
/* Enable DAC Channel1: Once the DAC channel1 is enabled, PA.04 is
automatically connected to the DAC converter. */
DAC_Cmd(DAC_Channel_1, ENABLE);
/* Enable DAC Channel2: Once the DAC channel2 is enabled, PA.05 is
automatically connected to the DAC converter. */
DAC_Cmd(DAC_Channel_2, ENABLE);
/* Enable DMA for DAC Channel1 */
DAC_DMACmd(DAC_Channel_1, ENABLE);
/* TIM8 enable counter */
TIM_Cmd(TIM6, ENABLE);
while (1)
{
}
/* DMA channel1 configuration ----------------------------------------------/
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; // 外设地址
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue; // 内存地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; // DMA 传输方向单向
DMA_InitStructure.DMA_BufferSize = 1; // 设置DMA在传输时缓冲区的长度 word
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // 设置DMA的外设递增模式,一个外设
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; // 设置DMA的内存递增模式
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; // 外设数据字长
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; // 内存数据字长
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; // 设置DMA的传输模式:连续不断的循环模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High; // 设置DMA的优先级别
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; // 设置DMA的2个memory中的变量互相访问
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
/ Enable DMA channel1 /
DMA_Cmd(DMA1_Channel1, ENABLE);
/ ADC1 configuration ------------------------------------------------------/
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // 独立工作模式
ADC_InitStructure.ADC_ScanConvMode = ENABLE; // 扫描方式
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // 连续转换
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 外部触发禁止
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // 数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1; // 用于转换的通道数
ADC_Init(ADC1, &ADC_InitStructure);
/ ADC1 regular channel14 configuration /
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);
/ Enable ADC1 DMA /
ADC_DMACmd(ADC1, ENABLE);
/ Enable ADC1 /
ADC_Cmd(ADC1, ENABLE);
/ Enable ADC1 reset calibaration register /
ADC_ResetCalibration(ADC1);
/ Check the end of ADC1 reset calibration register /
while(ADC_GetResetCalibrationStatus(ADC1));
/ Start ADC1 calibaration /
ADC_StartCalibration(ADC1);
/ Check the end of ADC1 calibration /
while(ADC_GetCalibrationStatus(ADC1));
/ Start ADC1 Software Conversion /
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(1)
{
AD_value = ADC_GetConversionValue(ADC1);
if (ticks++ >= 900000) { / Set Clock1s to 1 every 1 second /
ticks = 0;
Clock1s = 1;
}
/ Printf message with AD value to serial port every 1 second /
if (Clock1s) {
Clock1s = 0;
printf("The current AD value = 0x%04X \r\n", AD_value);
}
} */
}
main()函数中RCC配置好了
void RCC_Configuration(void)
{
/* RCC system reset(for debug purpose) */
RCC_DeInit();
/* Enable HSE */
RCC_HSEConfig(RCC_HSE_ON);
/* Wait till HSE is ready */
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* Flash 2 wait state */
FLASH_SetLatency(FLASH_Latency_2);
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* PLLCLK = 8MHz * 9 = 72 MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* Enable PLL */
RCC_PLLCmd(ENABLE);
/* Wait till PLL is ready */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
/* Select PLL as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* Wait till PLL is used as system clock source */
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
/* Enable DMA clock */
// RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
/* Enable ADC1 and GPIOC clock */
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);
/* Enable USART1 and GPIOA clock */
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
/* Enable peripheral clocks --------------------------------------------------*/
/* DMA clock enable */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
/* AFIO and GPIOA Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
/* DAC Periph clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
/* TIM6 Periph clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
}
程序是这样的 上面只是我这样写的
-
公阳,电流从E -> C -> 输出到LED,用PNP
公阴,电流从LED -> C -> 流出到地,用NPN
目的是让三极管的BE驱动电流不受负载影响,充分饱和
我怎么觉得是反的呢?
公阳,电流从E -> C -> 输出到LED,用NPN
公阴,电流从LED -> C -> 流出到地,用PNP
-
mark
-
这个是要用SysTick,自己添加的
-
下载 (779.28 KB)
2010-6-25 11:03
时钟线下降沿
下载 (782.3 KB)
2010-6-25 11:03
时钟线上升沿
下载 (781.87 KB)
2010-6-25 11:03
数据线下降沿
下载 (780.36 KB)
2010-6-25 11:03
数据线上升沿
数据线很不正常,加100p电容下地也还是一样
不知道该怎么弄
-
你要记住一点,老师知识量比你大一些,可以教你具体知识,从他嘴里蹦出的其余的东西全是扯淡。
门槛不高,不一定非要大学生才行。
-
我就是使用的这个目录下CompactFramework的System.Data.SQLite.dll,难道不对吗
-
CE5.0吧?
需要在PB上File->Manage Catalog Items然后点import找到你的SMDK2440.cec再建立项目的时候就可以了。
-
个人感觉女生还是去研究一下上位机程序比较好
-
能把错误代码贴点上来吗?
-
他贴的他D:盘的图
-
5:30啊
-
P0=table1[dis[k]];
这个table1一共才12个,dis[k]的值是否在0-11呢?
dis[8]={0x03,0x03,0xfd,0x03,0x03,0xfd,0x03,0x03};//
0xfd是否该改为0x0b?
-
头文件没有包含呗
-
请问怎么做?数据都在txt文件上
-
带phy的arm很少,一般都是mac,w5100应该可以,还省事。
-
兄弟,把你的例子程序下载下来试用了,发现不太正常呢。液晶显示都是一些乱的东西,感觉就是没有初始化好。希望你修正了再放上来了
-
请给出你的电路图。
可以给VDDA与VDD分开供电,但有2个条件:1)VDDA与VDD之间的电压差任何时候都不能超过300mV;2)VDDA与VDD必须同时上电、同时断电,否则前面的条件就满足不了啦。
-
涉及到Io访问速度问题,通常缓冲可以提高系统Io效率,但是有些地方比如OAL层或者bootloader中使用缓冲可能造成灾难,例如缓冲可能造成我们对设备的写操作的时序不对等等。因此一般在驱动中都是使用不带缓冲的设备地址即0xA0000000-0xBFFFFFFF!
-
谢谢啦,CMD是要自己写的,我已经成功了~~呵呵