728x90
반응형
SMALL
TIM4 채널 1234
TIM3 채널 34
여기서 그동안 삽질한게
요고였음.
HSE로 하고 막 이랬는데 까불지마셈./.
여기도 건든건 없음
건든건 오직!!!
TIMER뿐
TIM3에서 Clock은 Internal Clock
channel은 5,6번 서보모터만 추가로 넣은거라 CH3,4 PWM으로 Generation갈겨주기
자 그리고
파라미터 셋팅
Prescaler 84에 priod는 2000
그리고 여기서!!! 계속 실수한거!!~
스크롤 내리면 이게 있음.
이거 Pulse100으로 맞추기
Timer 4 도 다 똑같음
마저 다 체크해주기
자 그러면 main문은 어떻게 테스트 했나??
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM4_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
for (int pulse = 0; pulse <= 350; pulse += 50)
{
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, pulse);
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_2, pulse);
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, pulse);
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, pulse);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, pulse);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_4, pulse);
HAL_Delay(1000);
}
/* USER CODE BEGIN 3 */
}
for문으로 제어합니당.
자 그러면 이제 함수로 만들어서 인터럽트를
하려면!!
exti 설정해서 3번으로 찍혔네용
라이징 엣지를 이용해서 신호가 눌리자 마자 바로 응답하려고 합니다.
exti 인터럽트는 enable 꼭 해주시고
그리고 이거 말곤 없습니다.
아 라파
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO_PIN = 7
GPIO.setup(GPIO_PIN, GPIO.OUT)
try:
while True:
GPIO.output(GPIO_PIN, GPIO.HIGH) # HIGH 신호 전송
time.sleep(1)
GPIO.output(GPIO_PIN, GPIO.LOW) # LOW 신호 전송
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()
코드 바꿔줘야합니다.
그러면 it.c가보면 이래 코드가 작성되어있는데
stm32f4xx_it.c
맨 하단부
void EXTI3_IRQHandler(void)
{
/* USER CODE BEGIN EXTI3_IRQn 0 */
/* USER CODE END EXTI3_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);//interupt flag clear and callback
/* USER CODE BEGIN EXTI3_IRQn 1 */
/* USER CODE END EXTI3_IRQn 1 */
}
/* USER CODE BEGIN 1 */
728x90
반응형
LIST
'프로젝트 > 스마트 요양 지원 시스템 (RoboCare) : 노약자와 장애인 돌봄' 카테고리의 다른 글
⚠️AGV SERIAL TEST (0) | 2024.11.22 |
---|---|
[MCU_F/W설계] SUB 로봇암 제작_STM32 (2) | 2024.11.14 |
🔄Raspberry Pi 와 Arduino UART 통신하기 (0) | 2024.10.18 |
⚠️AGV SERIAL TEST(고민과정 끄적끄적) (0) | 2024.10.18 |
스마트 요양 지원 시스템 RoboCare : 프로젝트 기획2 (주제 선정) (2) | 2024.09.30 |