初始设置:SYS :debug_serial_write 勾选 timebase_source选择systick RCC:默认内部时钟所有不需要做任何修改
需要注意的是:如果想用IWDG,则在调试代码时需要先关闭之,否则系统不能正常运行,下面开始设置USART,如下图
接着设置通讯参数(之前的系统时钟配置为48MHz):
补充一下,这里要实现的是把txbuf数组中的10个字节的数据利用定时器17的溢出中断每隔500ms从TX口发送一次,下面设置定时器
Tout=(24000*1000)/48000000=0.5S计数周期
记得设置中断,如下图
扫描二维码关注公众号,回复:
3919062 查看本文章
到此CUBE设置完成
重点在下面哦
在主函数初始化部分进行
使能USART发送和定时器17
定义发送数组
u8 txbuf[10] = {0,1,2,3,4,5,6,7,8,9};
在stm32f0xx_it.c中有如下语句,其中
HAL_TIM_IRQHandler(&htim17);找到后goto definition到函数定义处,找到溢出中断对应的回调函数
void TIM17_IRQHandler(void)
{
/* USER CODE BEGIN TIM17_IRQn 0 */
/* USER CODE END TIM17_IRQn 0 */
HAL_TIM_IRQHandler(&htim17);
/* USER CODE BEGIN TIM17_IRQn 1 */
/* USER CODE END TIM17_IRQn 1 */
}
/* TIM Update event */
if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
{
if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET)
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
HAL_TIM_PeriodElapsedCallback(htim);
}
}
HAL_TIM_PeriodElapsedCallback(htim),这个函数就是我们要写的中断服务函数,由于cube在代码中有弱定义_weak,我们直接复制
/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
HAL_UART_Transmit(&huart2,&txbuf[0],sizeof(txbuf),100); //这个就是我们加入的中断服务程序,每500ms进入中断一次
}
/* USER CODE END 1 */
文中写的粗略一些,根据自己使用环境再进行详细编写!