欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
stm32使用寄存器做一個(gè)流水燈
[打印本頁(yè)]
作者:
yea1
時(shí)間:
2021-6-28 11:23
標(biāo)題:
stm32使用寄存器做一個(gè)流水燈
使用寄存器方式,用stm32做一個(gè)流水燈。
硬件:stm32f103R6,一個(gè)按鍵,5個(gè)LED燈。
功能:按鍵可以實(shí)現(xiàn)左移、右移、從中間往兩邊移動(dòng)。
原理圖:
1.png
(70.27 KB, 下載次數(shù): 90)
下載附件
2021-6-28 15:05 上傳
波形仿真:
代碼:
#include "stm32f10x.h"
/**
* @brief 延時(shí)函數(shù)
* @param time :X ms
* @retval none
*/
void delay_ms(u16 time)
{
u16 i=0;
while(time--)
{
i=12000; //自己定義
while(i--) ;
}
}
/**
* @brief LED初始化
* @param none
* @retval none
*/
void LED_Init(void)
{
RCC->APB2ENR|=1<<4; //使能PORTC時(shí)鐘
GPIOC->CRL &= 0xFFF00000;
GPIOC->CRL |= 0x00033333;//PC0-PC4 推挽輸出
GPIOC->ODR |= 0x0000001F; //PC0-PC4 輸出高,燈關(guān)閉狀態(tài)
}
/**
* @brief 按鍵初始化
* @param none
* @retval none
*/
void KEY_Init(void)
{
RCC->APB2ENR|=1<<3; //使能PORTB時(shí)鐘
GPIOB->CRL &= 0xFFFFF000;
GPIOB->CRL |= 0x00000888; //PB0-PB2 上拉輸入
GPIOB->ODR |= 1<<0;
}
/**
* @brief 流水燈左移
* @param none
* @retval none
*/
void LED_MoveLeft(void)
{
GPIOC->ODR |= 0x0000001F; //燈全部關(guān)閉
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFEF; //右邊第一個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFF7; //右邊第二個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFFB; //右邊第三個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFFD; //右邊第四個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFFE; //右邊第五個(gè)LED亮
delay_ms(10);
}
/**
* @brief 流水燈右移
* @param none
* @retval none
*/
void LED_MoveRight(void)
{
GPIOC->ODR |= 0x0000001F; //燈全部關(guān)閉
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFFE; //右邊第五個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFFD; //右邊第四個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFFB; //右邊第三個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFF7; //右邊第二個(gè)LED亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFEF; //右邊第一個(gè)LED亮
delay_ms(10);
}
/**
* @brief 流水燈從中間往兩邊移動(dòng)
* @param none
* @retval none
*/
void LED_MoveToSide(void)
{
GPIOC->ODR |= 0x0000001F; //燈全部關(guān)閉
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFFB; //中間燈亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFF1; //中間燈亮
delay_ms(10);
GPIOC->ODR &= 0xFFFFFFE0; //最外燈亮
delay_ms(10);
}
/**
* @brief 主函數(shù)
* @param none
* @retval none
*/
int main(void)
{
u16 t;
static u8 i=0;
LED_Init(); //LED初始化
KEY_Init(); //按鍵初始化
while(1)
{
t=GPIOB->IDR;
if(!(t & 0x0001))
{
i++;
if(i>3)
i=0;
switch(i)
{
case 1: LED_MoveLeft();//左移
break;
case 2: LED_MoveToSide();//兩邊移
break;
case 3:LED_MoveRight();//右移
break;
default:break;
}
}
//若要使用keil的邏輯示波器,取消延時(shí)注釋,更方便觀測(cè)波形
//delay_ms(200); //延時(shí)200ms
}
}
復(fù)制代碼
作者:
heikeji2021
時(shí)間:
2021-6-29 12:03
現(xiàn)在主要芯片太貴
作者:
heikeji2021
時(shí)間:
2021-6-29 12:04
能不能用8腳芯片做?
作者:
parkine
時(shí)間:
2021-6-30 18:10
能不能用8腳芯片做?
作者:
heikeji2021
時(shí)間:
2021-6-30 22:23
編譯出錯(cuò),不會(huì)搞呀
作者:
512-DZ
時(shí)間:
2021-7-4 12:16
能不能用8腳芯片做?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1