Atividades de programação de microcontroladores(13/05) (opcional)
Exércicios opcionais com intuito de promover um melhor entedimento da programação de microcontroladores.
Exercício 1
Siga todas instruções, uma após a outra, e registre previamente todos os passos antes de efetuar a programação propriamente dita:
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
Siga todas instruções, uma após a outra, e registre previamente todos os passos antes de efetuar a programação propriamente dita:
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
Siga todas instruções, uma após a outra, e registre previamente todos os passos antes de efetuar a programação propriamente dita:
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
Siga todas instruções, uma após a outra, e registre previamente todos os passos antes de efetuar a programação propriamente dita:
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:
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:
Last updated
Was this helpful?