注:下面是一些常用的代码,网上许多可是大多注释不全。高手看没问题,关于咱们这些新手就费力了……所以我把这些代码会集,进行了逐句注释,期望对新手们有价值。
我的了解——对芯片内部flash进行操作的函数,包含读取,状况,擦除,写入等等,能够答应程序去操作flash上的数据。
根底运用1,FLASH时序推迟几个周期,等候总线同步操作。引荐依照单片机体系运转频率,0—24MHz时,取Latency=0;24—48MHz时,取Latency=1;48~72MHz时,取Latency=2。一切程序中有必要的
用法:FLASH_SetLatency(FLASH_Latency_2);
方位:RCC初始化子函数里边,时钟起振之后。
根底运用2,敞开FLASH预读缓冲功用,加快FLASH的读取。一切程序中有必要的
用法:FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
方位:RCC初始化子函数里边,时钟起振之后。
3、
我的了解——不了解,也不需求了解。只需知道一切外设在调试的时分,EWRAM需求从这个函数里边取得调试所需信息的地址或许指针之类的信息。
根底运用1,只要一个函数debug。一切程序中有必要的。
用法:
#endif
方位:main函数最初,声明变量之后。
4、
我的了解——办理体系内部的中止,担任翻开和封闭中止。
根底运用1,中止的初始化函数,包含设置中止向量表方位,和敞开所需的中止两部分。一切程序中有必要的。
用法:
{
NVIC_InitTypeDef
#ifdef
//假如C/C++
NVIC_SetVectorTable(NVIC_VectTab_RAM,
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH,
#endif
//以下为中止的敞开进程,不是一切程序有必要的。
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//设置NVIC优先级分组,方法。
//注:总共16个优先级,分为抢占式和呼应式。两种优先级所占的数量由此代码确认,NVIC_PriorityGroup_x能够是0、1、2、3、4,别离代表抢占优先级有1、2、4、8、16个和呼应优先级有16、8、4、2、1个。规则两种优先级的数量后,一切的中止等级有必要在其中挑选,抢占等级高的会打断其他中止优先履行,而呼应等级高的会在其他中止履行完优先履行。
//NVIC_InitStructure.NVIC_IRQChannel
//开中止,中止称号见函数库
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPrio
//抢占优先级
//NVIC_InitStructure.NVIC_IRQChannelSubPriority
//呼应优先级
//NVIC_InitStructure.NVIC_IRQChannelCmd
//NVIC_Init(&NVIC_InitStructure);
}
5、
我的了解——办理外部、内部和外设的时钟,设置、翻开和封闭这些时钟。
根底运用1:时钟的初始化函数进程——
用法:void
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//flash读取缓冲,加快
//注:AHB首要担任外部存储器时钟。PB2担任AD,I/O,高档TIM,串口1。APB1担任DA,USB,SPI,I2C,CAN,串口2345,一般TIM。
//PLLCLK
while
//等候PLL发动
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//将PLL设置为体系时钟源
while
}