Nghiên cứu Khoa học

Lập trình nhúng với STM32

  • 18/09/2022
  • Nghiên cứu Khoa học

Lập trình nhúng cho kit STM32 với module và hàm thư viện HAL khá phổ biến với sinh viên. Lập trình thanh ghi và thao tác bit trên địa chỉ cụ thể của thanh ghi là hướng lập trình giúp sinh viên hiểu sâu hơn về dòng vi điều khiển cũng như hệ thống nhúng.

Sau đây là ví dụ về lập trình ngắt sử dụng địa chỉ thanh ghi cho vi điều khiển STM32

#include "TM4C123GH6PM.h"
void delay_ms(int time)
{
int i, j;
for(i = 0 ; i < time; i++)
for(j = 0; j < 3180; j++);
}
int main()
{
SYSCTL->RCGCGPIO |= 0x20; // turn on bus clock for GPIOF
SysTick->LOAD = 15999999; // one second delay relaod value
SysTick->CTRL = 7 ; // enable counter, interrupt and select system bus clock
SysTick->VAL = 0; //initialize current value register
GPIOF->LOCK=0X4C4B434B;
GPIOF->CR|=0X01;
GPIOF->PUR|=(1<<0)|(1<<4);
GPIOF->DIR&=~((1<<0)|(1<<4));//11101110B PF0 VOI PF4
GPIOF->DIR|=(1<<1)|(1<<3);// RED, GREEN LED
GPIOF->AFSEL&=~((1<<1)|(1<<3));
GPIOF->AMSEL&=~((1<<1)|(1<<3));
GPIOF->PCTL|=0X000FFFFF;
GPIOF->DEN|=0X1C;
// SET INTERRUPT GPIO
GPIOF->IS&=~((1<<0)|(1<<4));//NGAT CANH PF0 PF4
GPIOF->IEV&=~((1<<0)|(1<<4));// CANH XUONG HOAC MUC 0
GPIOF->IBE&=~((1<<0)|(1<<4));
GPIOF->ICR|=(1<<0)|(1<<4);
GPIOF->IM|=(1<<0)|(1<<4);// CHO PHEP NGAT PF4 VA PF0
NVIC->ICER[0]=(1<<30);// CHO PHEP NGAT PORT F

while (1)
{

}
}

// this routine will execute after every one second

void SysTick_Handler(void)
{
GPIOF->DATA ^= 0X8; //toggle PF3 pin

}
void GPIOF_Handler(void)
{

SysTick->LOAD = 1599999;
GPIOF->ICR&=~(1<<0);
}

Các tin khác