資源簡介
此為2015年電子設計競賽B題金屬循跡小車代碼,內包含采集LDC1314四路通道的值,開發環境為STM32F103ZET6

代碼片段和文件信息
#include?“delay.h“
#include?“sys.h“
//////////////////////////////////////////////////////////////////////////////////? ?
//如果使用ucos則包括下面的頭文件即可.
#if?SYSTEM_SUPPORT_UCOS
#include?“includes.h“ //ucos?使用 ??
#endif
static?u8??fac_us=0;//us延時倍乘數
static?u16?fac_ms=0;//ms延時倍乘數
#ifdef?OS_CRITICAL_METHOD? //如果OS_CRITICAL_METHOD定義了說明使用ucosII了.
//systick中斷服務函數使用ucos時用到
void?SysTick_Handler(void)
{ ???
OSIntEnter(); //進入中斷
????OSTimeTick();???????//調用ucos的時鐘服務程序???????????????
????OSIntExit();????????//觸發任務切換軟中斷
}
#endif
//初始化延遲函數
//當使用ucos的時候此函數會初始化ucos的時鐘節拍
//SYSTICK的時鐘固定為HCLK時鐘的1/8
//SYSCLK:系統時鐘
void?delay_init() ?
{
#ifdef?OS_CRITICAL_METHOD? //如果OS_CRITICAL_METHOD定義了說明使用ucosII了.
u32?reload;
#endif
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //選擇外部時鐘??HCLK/8
fac_us=SystemCoreClock/8000000; //為系統時鐘的1/8??
?
#ifdef?OS_CRITICAL_METHOD? //如果OS_CRITICAL_METHOD定義了說明使用ucosII了.
reload=SystemCoreClock/8000000; //每秒鐘的計數次數?單位為K ???
reload*=1000000/OS_TICKS_PER_SEC;//根據OS_TICKS_PER_SEC設定溢出時間
//reload為24位寄存器最大值:16777216在72M下約合1.86s左右
fac_ms=1000/OS_TICKS_PER_SEC;//代表ucos可以延時的最少單位 ???
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;??? //開啟SYSTICK中斷
SysTick->LOAD=reload;? //每1/OS_TICKS_PER_SEC秒中斷一次
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;??? //開啟SYSTICK????
#else
fac_ms=(u16)fac_us*1000;//非ucos下代表每個ms需要的systick時鐘數???
#endif
} ????
#ifdef?OS_CRITICAL_METHOD //使用了ucos
//延時nus
//nus為要延時的us數. ???? ???
void?delay_us(u32?nus)
{
u32?ticks;
u32?toldtnowtcnt=0;
u32?reload=SysTick->LOAD; //LOAD的值 ???? ?
ticks=nus*fac_us;? //需要的節拍數 ?? ?
tcnt=0;
told=SysTick->VAL;???????? //剛進入時的計數器值
while(1)
{
tnow=SysTick->VAL;
if(tnow!=told)
{ ????
if(tnow else?tcnt+=reload-tnow+told; ????
told=tnow;
if(tcnt>=ticks)break;//時間超過/等于要延遲的時間則退出.
}??
};? ????
}
//延時nms
//nms:要延時的ms數
void?delay_ms(u16?nms)
{
if(OSRunning==TRUE)//如果os已經在跑了 ????
{ ??
if(nms>=fac_ms)//延時的時間大于ucos的最少時間周期?
{
??? OSTimeDly(nms/fac_ms);//ucos延時
}
nms%=fac_ms; //ucos已經無法提供這么小的延時了采用普通方式延時????
}
delay_us((u32)(nms*1000)); //普通方式延時此時ucos無法啟動調度.
}
#else//不用ucos時
//延時nus
//nus為要延時的us數. ???? ???
void?delay_us(u32?nus)
{
u32?temp; ???? ?
SysTick->LOAD=nus*fac_us;?//時間加載 ?? ?
SysTick->VAL=0x00;????????//清空計數器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk?;??????????//開始倒數 ?
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待時間到達???
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;???????//關閉計數器
SysTick->VAL?=0X00;???????//清空計數器 ?
}
//延時nms
//注意nms的范圍
//SysTick->LOAD為24位寄存器所以最大延時為:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK單位為Hznms單位為ms
//對72M條件下nms<=1864?
void?delay_ms(u16?nms)
{ ? ?? ??
u32?temp; ???
SysTick->LOAD=(u32)nms*fac_ms;//時間加載(SysTick->LOAD為24bit)
SysTick->VAL?=0x00;???????????//清空計數器
SysTick->CTRL|=SysTick_CTRL_EN
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-21?21:32??LDC1314\
?????文件?????????497??2016-07-27?12:46??LDC1314\Jli
?????文件??????208884??2016-07-27?12:51??LDC1314\Jli
?????文件?????????650??2016-06-27?15:58??LDC1314\Jli
?????目錄???????????0??2017-09-22?18:34??LDC1314\LCD\
?????文件????????3725??2016-05-05?18:32??LDC1314\LCD\delay.c
?????文件?????????207??2016-05-09?15:54??LDC1314\LCD\delay.h
?????文件???????16156??2016-05-06?15:44??LDC1314\LCD\font.h
?????文件???????80297??2016-05-06?15:44??LDC1314\LCD\lcd.c
?????文件????????7125??2016-05-09?16:36??LDC1314\LCD\lcd.h
?????文件?????????164??2016-05-05?18:32??LDC1314\LCD\sys.c
?????文件????????2229??2016-07-26?16:34??LDC1314\LCD\sys.h
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\CM3\
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\CM3\CoreSupport\
?????文件???????17273??2010-06-07?10:25??LDC1314\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
?????文件???????85714??2011-02-09?14:59??LDC1314\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\
?????文件???????26297??2011-03-14?12:31??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\Release_Notes.html
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\
?????目錄???????????0??2017-09-22?18:34??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\
?????文件???????15766??2011-03-10?10:52??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_cl.s
?????文件???????15503??2011-03-10?10:52??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_hd.s
?????文件???????15692??2011-03-10?10:52??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_hd_vl.s
?????文件???????12376??2011-03-10?10:52??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_ld.s
?????文件???????13656??2011-03-10?10:52??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_ld_vl.s
?????文件???????12765??2011-03-10?10:52??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s
?????文件???????14073??2011-03-10?10:51??LDC1314\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md_vl.s
............此處省略161個文件信息
評論
共有 條評論