新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2024-4-28
- 在线时间
- 1 小时
|
发表于 2024-4-28 16:32:56
|
显示全部楼层
void send_dmx512(uint8_t *buf,uint16_t len)
{
int pDMX_buf = 0;
if(DMXsend_start_flag == 0)
{
//DMXsend_start_flag = 1;
TX_gpioConfig(1);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET); //拉低tx引脚,改为普通输出模式
//HAL_TIM_Base_Start_IT(&htim3);//打开定时器
delay_us(88);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
delay_us(8);
TX_gpioConfig(2);
//HAL_UART_Transmit_DMA(&huart2, buf, len);
while(pDMX_buf < len) //1-512 195
{
while((USART2->SR&0X40)==0);//等待,直到发送完毕
if(USART2->SR & (1<<6))
{
USART2->DR = 0x0100 | buf[pDMX_buf];
pDMX_buf++;
}
}
}
}
void TX_gpioConfig(uint8_t tx_select)//普通输出模式和复用输出模式
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/*Configure GPIO pin : PA2 */
GPIO_InitStruct.Pin = GPIO_PIN_2;
if(tx_select == 1)
{
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
}
if(tx_select == 2) {GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;}
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
我的代码波形正确,但是无法控制 |
|