Tivec 마이크로컨트롤러 기본 연습 1.7 소스
6431 단어 Tivac 마이크로컨트롤러
시범 코드는 가장 좋은 코드가 아니라 이해하기 쉬운 측면에서 가장 잘 이해할 수 있는 코드를 얻는 것이다.
//********************************************************************************//기초연습 1.7: 버저 발성////프로세스 설명://1.하드웨어 회로에서 알 수 있듯이 버튼을 누르지 않았을 때, 읽기 가이드의 값은 고전평이다.버튼을 눌렀을 때 접지에서 발을 끄는 값을 읽는 것은 저전평이다.//키와 관련된 가이드를 GPIO로 설정하고 입력하십시오.폴링 방식으로 키를 읽습니다(무중단 방식).// 2. 트랙을 GPIO, 출력으로 설정합니다.높은 레벨 및 낮은 레벨 출력을 통해 LED의 밝기와 끄기를 제어합니다.// 3. 저전기 평상시를 읽고 사용자의 버튼을 설명한다.버튼에 따라 상응하는 동작을 한다.// 4. 소스 버저 내부에 진동원이 있어 전기만 통하면 울린다.무원 내부에 진동원이 없으면 직류 신호로 울릴 수 없다.반드시 일정 주파수의 방파로 그것을 구동해야 한다//5.//GPIO 입구 조작을 통해 버저의 발성을 제어하고 버튼 K1을 누르면 소리를 바꿔 5가지 다른 소리를 낼 수 있다.//D3은 프로그램 실행 표시등으로, 즉 프로그램이 실행될 때 이 LED가 느리게 깜박이는 것을 말한다.////하드웨어 설명://LED2(파란색)--PF0//LED3(녹색)--PA4--사용//LED4(빨간색)--PD6//K1--PD7--사용//K2--PF4//K3//K4///K4--PA2////////PC5--접봉울림기//////주의사항:///발을 끄는 PF0과 PD7을 비교하는 것이 기본적으로 특수한 보호입니다.다시 프로그래밍을 하려면 먼저 잠금 해제//팁://SysConfig 도구를 통해 발을 끄는 초기 설정을 해야 합니다. 이런 요소를 고려할 필요가 없습니다.//SysConfig 사용 참조 링크:https://www.bilibili.com/read/cv6258251/////사고://1.LED가 깜박거릴 때 버저의 지연 시간을 수정하면 LED의 지연 시간//--LED 지연 시간의 대순환에 또 하나의 bep의 작은 순환이 포함됩니다//--권장: 타이머를 통해 작동 표시등을 구현하는 것;//**************************************************************************************************************************
#include
#include
#include "inc/hw_gpio.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
// , , ;
// , ( )
uint32_t const delay_tab[]={0,500,1000,1500,2000,3000,4000,5000,8000};
void main(void)
{
uint32_t ui32_led_delay;
uint32_t ui32_beep_delay;
uint32_t ui32_delay_config;
uint8_t index;
//----------- -------------
// PA , Ready
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA))
{
}
// PC , Ready
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOC))
{
}
// PD , Ready
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOD))
{
}
// PF , Ready
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF))
{
}
//----------- -------------
//PA4-> LED, PA4 GPIO,
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);
//PD6-> LED, PD6 GPIO,
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_6);
//PF0-> LED, PF0 GPIO,
HWREG(GPIO_PORTF_BASE+GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTF_BASE+GPIO_O_CR) |= GPIO_PIN_0;
HWREG(GPIO_PORTF_BASE+GPIO_O_LOCK) = 0x0;
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);
//PD7->K1, PD7 GPIO,
HWREG(GPIO_PORTD_BASE+GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTD_BASE+GPIO_O_CR) |= GPIO_PIN_7;
HWREG(GPIO_PORTD_BASE+GPIO_O_LOCK) = 0x0;
GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7);
//PF4->K2, PF4 GPIO,
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
//PA3->K3, PA3 GPIO,
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_3);
//PA2->K4, PA2 GPIO,
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);
// PC5 GPIO,
GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5);
//-----------LED -------------
//PA4 , LED
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0xFF);
//PD6 , LED
GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,0xFF);
//PF0 , LED
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0xFF);
index = 5;
ui32_delay_config =delay_tab[index];
while(1)
{
//
//-----LED ---
//
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0x00);
for(ui32_led_delay=0;ui32_led_delay<200;ui32_led_delay++)
{
//PD7->K1
// , ,
if(0 == GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_7))
{
// , , ,
index --;
if(0 == index) index = 8;
ui32_delay_config =delay_tab[index];
// ,
while(0 == GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_7));
}
//PF4->K2
// , ,
if(0 == GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_4))
{
// , , ,
index ++;
if(9 == index) index = 1;
ui32_delay_config =delay_tab[index];
// ,
while(0 == GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_4));
}
// . LED .
// , ,
//----- ,PC5 ---
//
GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_5,0x00);
for(ui32_beep_delay=0;ui32_beep_delayK1
// , ,
if(0 == GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_7))
{
// , , ,
index --;
if(0 == index) index = 8;
ui32_delay_config =delay_tab[index];
// ,
while(0 == GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_7));
}
//PF4->K2
// , ,
if(0 == GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_4))
{
// , , ,
index ++;
if(9 == index) index = 1;
ui32_delay_config =delay_tab[index];
// ,
while(0 == GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_4));
}
// . LED .
// , ,
//----- ,PC5 ---
//
GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_5,0x00);
for(ui32_beep_delay=0;ui32_beep_delay
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Tivec 마이크로컨트롤러 기본 연습 1.7 소스이 실험 소스는 참조 코드로서 EK-TM4C123GXL에서 검증할 수 있습니다. 시범 코드는 가장 좋은 코드가 아니라 이해하기 쉬운 측면에서 가장 잘 이해할 수 있는 코드를 얻는 것이다. //*************...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.