打印
[STM32G0]

STM32G030F6使用CubeMx配置PWM实验

[复制链接]
822|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2021-10-4 16:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1. 使用 CubeMx 创建 PWM 工程
打开 CubeMx 软件,选中我们此次使用的单片机型号 STM32G030F6P6 ,点击 StartProject.

配置定时器

配置定时器1的通道1和通道2 产生PWM;
设置定时器1的主频:设置了( 63 + 1) 分频即定时器主频为1M
设置PWM定时的周期计数为 1000 即 1000HZ


设置通道一 翻转的计数值为 500 即占空比为 50%
设置通道二 翻转的计数值为 200 即占空比为 20%

配置时钟

使用内部高速时钟,将主频倍频到64MHZ

配置工程相关选项


配置完成后点击右上角 GENERATE CODE完成工程的创建


使用特权

评论回复
沙发
tpgf|  楼主 | 2021-10-4 16:52 | 只看该作者
2. 编程

定时器的初始化函数都已经由CubeMx生成,我们仅需要打开 PWM的使能即可


/**

  * @brief  The application entry point.

  * @retval int

  */

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_TIM1_Init();

    /* USER CODE BEGIN 2 */

    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);   //1000HZ 50%占空比的PWM

    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);   //1000HZ 20%占空比的PWM

    /* USER CODE END 2 */


    /* Infinite loop */

    /* USER CODE BEGIN WHILE */

    while(1)

    {

        /* USER CODE END WHILE */


        /* USER CODE BEGIN 3 */

    }

    /* USER CODE END 3 */

}



可以使用一下函数修改PWM的占空比

// 使用此宏定义修改占空比
__HAL_TIM_SetCompare(__HANDLE__, __CHANNEL__, __COMPARE__)



例如:

// 将定时器1的通道1 翻转计数修改为 800,在我们的例程上正好就是800/1000 即 80% 的占空比
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,800);




3. 实验现象
编译并将工程下载到开发板后,使用示波器或者逻辑分析器查看 PA8 和 PB3 引脚是否输出 1000HZ 且占空比分别为 50% 和 20% 的方波。



使用特权

评论回复
板凳
callhgd| | 2021-12-29 15:40 | 只看该作者
用CubeMx配置确实是很方便。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1923

主题

15596

帖子

11

粉丝