Atividades de programação de microcontroladores(13/05) (opcional)

Exércicios opcionais com intuito de promover um melhor entedimento da programação de microcontroladores.

Opcional

Estes exercícios são opcionais e não são para entrega. Faça-os para treino e, se tiver dúvida, procure os membros responsáveis pelas aulas de programação.

Exercício 1

1) Para essa atividade, você deve criar um código capaz de piscar um LED, fazendo ele ascender e apagar a cada meio segundo.

Faça um esquemático com o módulo Blackpill e um LED externo. Depois crie um código utilizando a função HAL_TIM_Base_Start_IT(TIM_HandleTypeDef* htim), HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim) e HAL_GPIO_TogglePin(...) para piscar o LED.

Outras tarefas para testar seus conhecimentos

Exercício 2

2) Faça um código que leia um valor de tensão e armazene em uma variável. Para variar a tensão use um pontenciômetro. Utilize as funções HAL_ADC_Start(...), HAL_ADC_PollForConversion(...) e HAL_ADC_GetValue(...).

Exercício 3

3) Pisque um LED com um botão. Para isso você deve ler um valor digital em algum pino e ligar ou desligar um LED com base nisso. Use HAL_GPIO_ReadPin(...) para fazer a leitura e HAL_GPIO_WritePin(...) para ascender o LED.

Exercício 4

4) Gere um sinal de PWM e envie para um LED. Para isso use um timer e configure um canal para geração de pwm, após isso utilize HAL_TIM_PWM_Start(...) para iniciar o pwm e um define no TIMx->CCRx para poder passar o valor do pwm para o timer e canal utilizados.

Exemplo de define:

#define PWM_IN1_MOTOR_D TIM3->CCR2 // utilizando timer 3 canal 2
#define PWM_IN2_MOTOR_D TIM3->CCR1 // utilizando timer 3 canal 1	

Observação: Não utilize um prescaler para o timer, mas defina um valor de contagens para ser seu maior duty cicle. Um exemplo de configuração do .ioc abaixo:

Counter Settings de um timer no .ioc

Last updated

Was this helpful?