03.点亮LED及按键测试
<p>打开Demo包中02_GPIO_Key_Polling_mode文件夹下Keil程序 我们在原程序的基础上添加如下内容</p><p>int main(void)<br />
{<br />
uint8_t count;<br />
systick_config();</p>
<p> /* enable the LED2 GPIO clock */<br />
rcu_periph_clock_enable(RCU_GPIOA);<br />
rcu_periph_clock_enable(RCU_GPIOC);<br />
/* configure LED2 GPIO pin */<br />
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7|GPIO_PIN_8);<br />
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7|GPIO_PIN_8);<br />
<br />
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6|GPIO_PIN_7);<br />
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6|GPIO_PIN_7);<br />
/* reset LED2 GPIO pin */<br />
gpio_bit_reset(GPIOA,GPIO_PIN_7);<br />
gpio_bit_reset(GPIOA,GPIO_PIN_8);<br />
gpio_bit_reset(GPIOC,GPIO_PIN_7);<br />
gpio_bit_reset(GPIOC,GPIO_PIN_6);<br />
<br />
/* configure key pin as input */<br />
gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);</p>
<p> while(1) {<br />
/* check whether the key is pressed */<br />
if(RESET == gpio_input_bit_get(GPIOA, GPIO_PIN_0)) {<br />
delay_1ms(100);<br />
<br />
/* check whether the key is pressed */<br />
if(RESET == gpio_input_bit_get(GPIOA, GPIO_PIN_0)) {<br />
switch(count)<br />
{<br />
case 0:gpio_bit_toggle(GPIOA, GPIO_PIN_7);break;<br />
case 1:gpio_bit_toggle(GPIOA, GPIO_PIN_8);break;<br />
case 2:gpio_bit_toggle(GPIOC, GPIO_PIN_6);break;<br />
case 3:gpio_bit_toggle(GPIOC, GPIO_PIN_7);break;<br />
<br />
}<br />
count++;<br />
if(count == 4)<br />
{<br />
count=0;<br />
}<br />
/* toggle LED2 GPIO pin */<br />
<br />
<br />
}<br />
while(RESET == gpio_input_bit_get(GPIOA, GPIO_PIN_0)) {<br />
}<br />
}<br />
}<br />
}</p>
<p> 编译完代码无误后,下载程序</p>
<p>这时我们每按下一次按键,LED1-LED4,依次点亮然后熄灭</p>
<p> Demo对应的例程有些少,接下来会围绕IIC和spi进行简单测试</p>
<p>看到按键的例程,我又想说几句。</p>
<p>对于这种在主程序中,用whil状态下检测按键,在现实中的项目没有实际意义。</p>
<p>希望检测按键是在定时器、中断的下的状态机实现,那才有实际意义。</p>
<p>对不起呀!</p>
<p>在标题加上开发板的型号名称,这样会更好一些~</p>
页:
[1]