stm32 HAL库TIM的一些操作


HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); // 开启PWMHAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_4); // 关闭PWM __HAL_TIM_GET_PRESCALER(__HANDLE__

UART中断接收


串口中断的处理void USART1_IRQHandler(void){rt_interrupt_enter();//在中断中一定要调用这对函数,进入中断if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE) != RT_FALSE)//获取IDLE标志

rtthread创建线程等

杂项 

1、创建线程static rt_thread_t adc_thread = RT_NULL;//创建线程adc_thread = rt_thread_create("adcthread",ADC_TASK,RT_NULL,2048,3,10);if(adc_thread != R

RT-THREAD中使用HAL_DELAY

杂项 

正常是不能用HAL_DELAY的,这东西是阻塞的,用了后任务无法切换。但有的时候移植别人的东西,就是有很多HAL_DELAY,不用不知道咋整,只好加上使用的办法是在滴答定时器中断里面加入逻辑时会有的函数void SysTick_Handler(void){ rt_interrupt_enter

MDK移植LVGL

杂项 

目前只写了显示部分,输入没有首先,低性能的MCU中,最好还是用LVGL8,这个LVGL9比LVGL8要慢LVGL需要定时给出心跳让任务进行lv_tick_inc(1);LVGL给出心跳后,需要手动让任务运行,而不是直接不用管像是callback一样。需要注意的是,这个函数用的内存比较大,之前在mai

一种打log的方法——使用define打开关闭log

杂项 

下面代码,…是传入的参数,__VA_ARGS__是被传入的地方#if 1#define printk(...) rt_kprintf(__VA_ARGS__);#else#define printk(...) #endif

关于rtthread的finsh问题

杂项 

目前我常用的配置rtthread方式是直接在cubemx中生成目前cubemx有两种rtthread选项,我不清楚区别,但两个使用起来区别很大下面以编号来表示两种方法:①rtthread官方链接安装上的包②cubemx上自带的rtthread①RT-Thread②X-CUBE-RT-Tjread_N

使用RS485,无自动切换且使用DMA发送时的情况

杂项 

用到RS485通信,但是CTRL是用单片机引脚控制的,并且用到DMA发送接收CTRL用引脚控制,则需要自己判断切换发送接收的时机1、简单的485发送不使用中断不使用DMA时,直接在发送前后控制ctrl来切换发送状态即可void rs485_send(uint8_t* sd_data,uint8_t

一个屏幕驱动(spi)

杂项 

void WriteComm(uint8_t cmd) { GC9107_DC_LOW(); GC9107_CS_LOW(); HAL_SPI_Transmit(&hspi2, &cmd, 1, HAL_MAX_DELAY); GC9107_CS_HIGH()

查看rtthread的heap

杂项 

void test_read(){rt_uint32_t total,used,max_used;rt_memory_info(&total,&used,&max_used);printk("total:%d,used:%d,c:%d\r\n",total