本帖最后由 sonicll 于 2021-4-22 18:10 编辑
库是死的,人是活的,你可以自己写条语句直接读状态寄存器:
uint32_t val;
val = USART_STAT(USART0);
然后自己判断每个bit就行了。GD那个usart_interrupt_flag_get函数,因为它不仅要读中断标志,还要读控制寄存器判断中断是否使能,每个中断使能位在不同的寄存器里。
还有你说的rcu_periph_clock_enable(),这个函数也是因为要操作的bit,有可能在不同的寄存器里,所以才用的enum,我觉得这都情有可原。你看ST的库里,虽然可以这样用:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1, ENABLE);
但是用户要自己操心函数是RCC_APB2PeriphClockCmd还是RCC_APB1PeriphClockCmd的问题,ST版块里因为这个APB1和APB2出问题的新手实在太多了。
|