
代碼卡在這下不去了
stm32開發板 stm32__103VC
大學生實訓 超聲波和溫濕度的測驗 并在LCD顯示
鏈接: https://pan.baidu.com/s/1ry2yIM7TdJwBJ3eyqkYUNA 提取碼: 6cxx
代碼 求大腿解決一下
uj5u.com熱心網友回復:
單步 ,看看具體卡到哪里uj5u.com熱心網友回復:
在具體實驗程式時
具體在 PM=Jisuan_Juli() 時沒有進行 具體為什么就不清楚了
uj5u.com熱心網友回復:
jisuan_juli() 單步不進去是嗎,單步除錯圖,和這個函式的原始碼貼出來。不然鬼知道哪里有問題uj5u.com熱心網友回復:
#include "csb.h"#include "ledkey.h"
#include "delay.h"
#include <stm32f10x.h>
#include "usartt.h"
#include "time3.h"
#include "timer.h"
int overcount=0;
void NVIC_Config(void)//éè???D??ó??è??
{
NVIC_InitTypeDef NVIC_InitStructer;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructer.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructer.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructer.NVIC_IRQChannel=TIM4_IRQn;
NVIC_InitStructer.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructer);
}
void CH_SR04_Init(void)//3?ê??ˉ?£?éμ?GPIOoíTIM4??ê±?÷
{
GPIO_InitTypeDef GPIO_InitStructer;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructer;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
GPIO_InitStructer.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructer.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructer.GPIO_Pin=GPIO_Pin_5;
GPIO_Init(GPIOA, &GPIO_InitStructer);
GPIO_InitStructer.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructer.GPIO_Pin=GPIO_Pin_6;
GPIO_Init(GPIOA, & GPIO_InitStructer);
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
GPIO_ResetBits(GPIOA, GPIO_Pin_6);
//TIM_DeInit(TIM4);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//TIM41òμ?APB1
TIM_TimeBaseInitStructer.TIM_Period=1000-1;
TIM_TimeBaseInitStructer.TIM_Prescaler=72-1;
TIM_TimeBaseInitStructer.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructer.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructer);
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);
NVIC_Config();
TIM_SetCounter(TIM4,0);//??á?
TIM_Cmd(TIM4,DISABLE);
}
float Jisuan_Juli (void)
{
float length=0,sum=0;
u32 tim;
int i=0;
while(i!=5)//??????′?2aá????ù?μ
{
GPIO_SetBits(GPIOA,GPIO_Pin_5);
Delay_us(20);
//Delay_us(20);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);//ResetBits
//printf("123");
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==0);
TIM_Cmd(TIM4,ENABLE);//ENABLE
//printf("k");
//overcount=0;
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==1);
TIM_Cmd(TIM4,DISABLE);//DISABL
//printf("g");
tim=TIM_GetCounter(TIM4);
//printf("TIM=%d\n",tim);
length=(tim+overcount*1000)/58.8;
sum=length+sum;
TIM_SetCounter(TIM4,0);
//TIM4->CNT=0; //TIM4??êy?÷??á?
overcount=0; //?D??ò?3?′?êy??á?
i++;
Delay_ms(10);
}
length=sum/5;
//printf("%fà??×\n",length);
return length;
}
void TIM4_IRQHandler(void)
{
if(TIM_GetITStatus(TIM4,TIM_IT_Update)!=RESET)
{
TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
overcount++;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/117174.html
標籤:單片機/工控
