|
IAR替代VC學習C語言
1、輸出(printf)
2、輸入(scanf)[stdint.h]
PID算法實例(后期再學習 目前了解代碼)
1、位置型
2、增量型
cubeMX
配置------
時鐘 clock (HSI HSE)
調試接口 SYS debug serial wire
I/O
IAR EWARM
keil MDK-ARM
GPIO輸入輸出
1、單燈閃爍等待延時
for(uint32_t i=0;i<500000;i++)
2、單燈閃爍輪詢計數(shù)
uint32_t count=0;
uint8_t flag=0;
count++;
if(count>=100000)
{
count=0;//記住清零
if(flag==0)
{
flag=1;
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); //滅燈
}
else
{
flag=0;
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); //亮燈
}
}
3、多燈不同頻率閃爍串行
for(uint32_t i=0;i<500000;i++)
for(uint32_t i=0;i<2500000;i++)
4、多燈不同頻率閃爍并行
uint32_t count0=0;
uint8_t flag0=0;
uint32_t count0=0;
uint8_t flag0=0;
count0++;
if(count>=100000)
{
count0=0;
if(flag0==0)
{
flag0=1;
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET); //滅燈
}
else
{
flag0=0;
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET); //亮燈
}
}
count1++;
if(count>=500000)
{
count1=0;
if(flag1==0)
{
flag1=1;
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); //滅燈
}
else
{
flag1=0;
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); //亮燈
}
}
5、傳統(tǒng)按鍵消抖
uint8_t step=0;
switch(step)
{
case 0:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET) //判斷按鍵是否按下
for(uint32_t i=0;i<100000;i++)
{
printf("按鍵按下");
step=1;
}
}
break;
case 1:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)
{
printf("按鍵釋放");
step=0;
}
}
break;
}
6、狀態(tài)機消抖
uint32_t count=0;
uint8_t step=0;
switch(step)
{
case 0:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET) //判斷按鍵是否按下
{
count++;
if(count>=100000)
{
count=0;
printf("按鍵按下");
step=1;
}
}
else
{
count=0;
}
}
break;
case 1:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)
{
step=0;
printf("按鍵釋放")
}
}
}
|
|