|
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、单灯闪烁轮询计数
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、传统按键消抖
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、状态机消抖
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("按键释放")
}
}
}
|
|